3

我的 APNS 通知工作正常,但我注意到一个奇怪的行为,我想要求确认。

我在“didFinishLaunchingWithOptions”或“didReceiveRemoteNotification”期间检索通知有效负载。在“didFinishLaunchingWithOptions”中,我正在检查

NSDictionary* userInfo = [launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];

以导出参数。在“didReceiveRemoteNotification”中,apsInfo 派生自 NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];

这工作正常,有一个例外:如果我忽略通知弹出窗口并点击“关闭”而不是“查看”并最终稍后从启动板启动我的应用程序,则不再有 apsInfo。这是“设计”吗?通知信息是否仅在点击“查看”或从通知信息对话框启动应用程序时可用?

问候

4

3 回答 3

0

同样的问题。通知到达电话和用户按下关闭而不是查看消息框。应用程序图标上出现一个徽章。做得好。现在,打开应用程序,正如 Apple 的文档所说:“当您希望launchOptions充满通知和 bla,bla ...时,请使用didFinishLaunchingWithOptions ”

问题是,当 didFinishLaunchingWithOptions 被触发时,launchOptions 仍然是空的。

尝试了许多解决方案的组合:没有结果。SDK的错误?

更新 ======================================= 在 Apple 的文档中,在 didFinishLaunchingWithOptions 中写道:“字典是如果用户通过点击应用程序图标启动应用程序,则为零。"

因此,我不知道在用户关闭通知消息框后启动应用程序时是否可以检索通知正文(并且应用程序图标上有徽章)。当用户关闭通知消息框时,通知正文是否丢失在空间中?更新======================================== 经过进一步调查,我找到了答案。是的,未交付的数据会丢失。无需等待用户上线,无需存储,无需通知发送信息。APNS 提供免费服务,Apple 对 100% 的数据交付不承担任何责任。

于 2010-01-18T18:16:35.407 回答
-1

看来,就是这样,就是这样。我想,我们都应该联系我们的服务器以(再次)检索通知有效负载。这是相当可笑的,因为通知有效负载不超过 256 字节,因此 Apple 可以提供一种方法来保留通知有效负载以供以后使用。至少您可以在“徽章”元素中检索发送给您的信息。这得救了。剩下的都丢了,可惜...

于 2010-01-19T11:29:15.830 回答
-1

我有一个想法,虽然我现在没有时间实现它。

  1. 当您发送推送通知时,请在您的 Web 服务器的数据库中记录发送通知的每个用户。

  2. 下次任何给定用户打开应用程序(可以直接从推送通知或稍后通过点击应用程序的图标)时,您 ping 您的服务器以查看该用户在发送推送通知后是否打开了应用程序。

  3. 如果这是自发送通知以来用户第一次打开应用程序,您的应用程序会从您的服务器读取适当的数据并进入您想要的任何状态。

在这一点上只是一个想法,但我认为它会起作用。只取决于是否值得您花时间实施它。

于 2011-05-04T17:59:44.490 回答