如果稍后推出,没有APNS启动?

时间:2010-01-05 23:50:11

标签: iphone apple-push-notifications badge

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

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

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

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

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

此致

3 个答案:

答案 0 :(得分:0)

同样的问题。通知到达手机和用户按下关闭而不是查看消息框。应用程序图标上会出现徽章。做得好。现在,打开应用程序,正如Apple的文档所说:“当你想要 launchOptions 填充通知和bla,bla ......时,使用 didFinishLaunchingWithOptions

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

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

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

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

答案 1 :(得分:-1)

似乎,这是方式,它是。我想,我们都应该联系我们的服务器,以便再次检索通知负载。这是相当荒谬的,因为通知有效载荷不超过256字节,因此Apple可以提供一种方法来保留通知有效负载供以后使用。至少您可以在“badge”元素中检索发送给您的信息。这是保存的。遗憾的是,其余的都丢失了......

答案 2 :(得分:-1)

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

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

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

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

  4. 此时只是一个想法,但我认为它会起作用。这取决于是否值得花时间来实施它。