2

この例に基づいて、kinveyでプッシュ通知を受信するDelphi XE6でアプリを作成しました

アプリケーションが実行されているときにプッシュを送信すると、PushEvent ハンドラーはそれを適切に受信しますが、アプリケーションを閉じて通知を押すと、アプリのみが開きます。

どの通知が押されたかを知り、そこからパラメーターを取得できますか?

前もって感謝します。

編集:

FormCreate で Extras を要求すると、もう少し近づきます。

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」が表示されます。したがって、通知によってアプリが起動されると、この Extra が利用可能になります。

問題は、そのエクストラに関する情報をどのように取得するかです。試してみLExtras.getString(StringToJString('message'))ましたが、これはプッシュメッセージの代わりに '' を書き込みます

4

1 に答える 1

1

Sarina DuPont が彼女のブログで答えてくれます

PushEventsコンポーネントには、StartupNotificationこの目的のためのプロパティがあります

procedure TMainForm.FormShow(Sender: TObject);
begin
  if Assigned(PushEvents.StartupNotification) then
    //Do something here!
    //for example 
    //Memo.Text := PushEvents.StartupNotification.Message;
end;
于 2014-05-20T16:42:14.217 に答える