0

我有一个为 iOS 和 Android 构建的应用程序,它有推送通知。一切都很好,但是我想知道是否有办法将推送通知的数据存储在应用程序中,以便当用户在收到通知后启动应用程序时,我可以再次向他们显示消息?

基本上我允许用户在他们的朋友之间分享信息和/或聊天。如果他们在应用程序处于后台时收到通知,它会作为正常的推送消息通过,但是当他们启动应用程序时,我想将他们引导到聊天功能以再次查看消息。

我将发送的消息存储在远程数据库中,但由于它们已经收到有效负载,因此应用程序调用远程数据库以检索相同的消息没有多大意义。

我在 AS3 和 Air 3.5 中使用 Distriqt 的扩展。

干杯

4

3 回答 3

1

几周前我问过 Distriqt 对同一件事的支持,他们解释说在应用程序关闭时无法获取推送通知消息的信息,所以他们建议这样做:-当用户打开应用程序时,你打电话给你的服务器检查他们是否没有遗漏任何东西,并从那里获取数据。如果有推送,您会显示推送消息,就好像它是在前台应用程序收到的一样。

这有点棘手,不是很令人满意,但它可以工作..只要用户遵循路径。如果您的用户收到推送并选择不打开您的应用程序,他下次打开时仍会在您的应用程序中收到推送消息。

于 2013-02-13T11:12:48.260 回答
0

我也很难解决这个问题,但我找到了解决方案!基本上,如果用户通过 Invoke 事件中的通知启动应用程序(不在后台运行),而不是通常的 Notification 事件。所以这样做:

NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, invoked);

private function invoked(evt:InvokeEvent):void
{
    if (evt.reason == InvokeEventReason.NOTIFICATION)
    {
        var payload:Object = Object(evt.arguments[0]);
        // do stuff
    }
}

差不多就是这样。此博客文章中有更多详细信息:http: //blogs.adobe.com/airodynamics/2012/05/29/push-notifications-support-in-ios/

于 2013-05-17T00:20:23.753 回答
0
NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, invoked);

不适用于 Android 推送通知。Android一直以InvokeEventReason.standard开头,所以收不到消息。它仅适用于 iOS。

于 2015-05-05T05:06:44.327 回答