带动作/参数的Android推送通知

时间:2014-05-05 14:40:07

标签: android delphi delphi-xe5 delphi-xe6

我刚刚使用Delphi XE6创建了一个应用程序,该应用程序使用基于this example的kinvey接收推送通知

当应用程序运行并发送推送时,PushEvent处理程序会很好地接收它,但是当应用程序关闭并按下通知时它只会打开我的应用程序。

我可以知道哪个通知被按下并从中获取参数吗?

提前致谢。

编辑:

我接近一点,在我的FormCreate中要求额外内容:

procedure TForm1.FormCreate(Sender: TObject);
var
  LIntent: JIntent;
  LExtras: JBundle;
  LExtrasArray: TJavaObjectArray<AndroidApi.JNI.JavaTypes.JObject>;
begin
  LIntent := SharedActivity.getIntent;
  try
    if LIntent <> nil then
    begin
      LExtras := LIntent.getExtras;
      if LExtras <> nil then
      begin
        //Now try to get the data
        LExtrasArray := LExtras.KeySet.toArray;
        for I := 0 to LExtrasArray.Length - 1 do
          Memo1.Lines.Add(JStringToString(LExtrasArray.Items[I].toString));
      end;
    end;
  finally 
    LIntent := nil;
  end;
end;

使用此代码,我的备忘录中会出现“gcm”。 因此,当通知触发我的应用程序时,我会获得此额外服务。

现在的问题是我如何得到有关额外的信息? 我试过了LExtras.getString(StringToJString('message')),但是写了''而不是推送消息

1 个答案:

答案 0 :(得分:1)

Sarina DuPont在她Blog

中回答我的问题

PushEvents组件为此目的具有属性StartupNotification

procedure TMainForm.FormShow(Sender: TObject);
begin
  if Assigned(PushEvents.StartupNotification) then
    //Do something here!
    //for example 
    //Memo.Text := PushEvents.StartupNotification.Message;
end;