【问题标题】:Capturing push notifications android捕获推送通知android
【发布时间】:2015-05-10 19:47:18
【问题描述】:

我正在使用 Delphi XE7。 我有一个 android 移动应用程序,接收推送通知。 有时,我在顶栏上有十个或更多推送图标通知。 当用户仅单击一个通知图标时,我希望所有通知都显示在我的应用程序中。

我执行了下一个过程来捕获所有它们,但没有工作,因为它只捕获单击的推送消息。

有人可以帮我解决这个问题吗?

    var NotificationCenter: TNotificationCenter;
        PushEvents1:TPushEvents
    //this procedure is called in the OnActivate event of app the main form.
    procedure getAllNotfications;
    begin
     AServiceConnection:=PushEvents1.PushConnection;
     if AServiceConnection = nil then exit;
     LNotifications:=AServiceConnection.Service.StartupNotifications;
     K:=Length(LNotifications);
     for i:= low(LNotifications) to high(LNotifications) do begin
         LNotification := TPushData.Create;
         LNotification.Load(LNotifications[i].Json);
         try
          if (Assigned(LNotification) and  ((LNotification.GCM.Message<>'') or (LNotification.Message<>''))) then begin 
            Memo1.Lines.Add('Enter by Notification Click: ' + LNotification.GCM.Message);

          end;
         finally
          LNotification.DisposeOf;
          LNotification:=nil;
         end;
     end;
    end;

问候,路易斯

【问题讨论】:

  • 谢谢,但我认为折叠键不是解决方案。如果我理解的话,折叠键 gcm 消息只能从许多具有相同折叠键的消息中传递一条消息。我需要将所有消息捕获到我的应用程序,而不仅仅是最后发送的消息。
  • @LuizAlves 你成功了吗?如果你解决了,能否给我们一个更新?

标签: android delphi mobile push-notification google-cloud-messaging


【解决方案1】:

如果您的应用注册了如下所示的服务,则可以通知您所有传入的通知:https://stackoverflow.com/a/11332278/80901

在服务中,您可以收集传入通知的所有数据,并将它们存储在本地(例如在数据库中)。

当用户从显示中选择一个通知时,您的应用程序可以从您的本地存储中收集收到的通知并将它们呈现在您的应用程序中。

【讨论】:

  • 我已经注册了服务。如果服务应用程序处于前台并处于活动状态,我可以捕获并显示我的服务应用程序中的所有消息,一切正常。问题是当服务处于非活动状态或处于后台时。在这种情况下,我收到推送通知到达的警报。如果我有十个警报并且我单击其中一个图标,我的应用程序被激活并且我只看到我刚刚单击的通知。我需要查看此时或之后收到的其他通知,我必须在通知栏上单击十次才能查看其他通知。
  • @LuizAlves 服务应用程序总是“在后台”,可能是 Delphi 问题。如何在服务应用中注册 GCM 事件的通知接收器?
  • 我使用:ADeviceId,ADeviceToken : String;开始 APushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM); APushService.AppProps[TPushService.TAppPropNames.GCMAppID] := GMCAppId; AServiceConnection := TPushServiceConnection.Create(APushService); AServiceConnection.Active := 真; AServiceConnection.OnChange := OnChg; AServiceConnection.OnReceiveNotification := OnRecieveNotificationEvent; ADeviceId := APushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID]; ADeviceToken := APushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];结束;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多