gpt4 book ai didi

objective-c - 应用未运行时推送通知 - launchOptions 字典为空

转载 作者:可可西里 更新时间:2023-11-01 04:27:31 27 4
gpt4 key购买 nike

我在这里阅读了很多关于在应用程序未运行时接收推送通知的问题(多于在后台,这意味着它已完全关闭)。 This question in particular最有助于弄清楚如何确定一个人是否正在使用 launchOptions 字典接收。

但是,我很困惑,我完全承认这可能是我的一个重大疏忽:当我的设备在应用程序关闭时收到此应用程序的推送通知,然后我打开我的应用程序时, launchOptions 字典是一个空指针。从前面提到的链接中接受的答案的描述以及其他地方,我收集到我应该能够看到通知负载;然而什么也没有。我正在为 iOS 5.1.1 开发。

我唯一的另一个想法是在启动时检查角标(Badge)的数量(大于零,做点什么......),但这似乎非常不可靠。

谁能告诉我我错过了什么?预先感谢您的帮助!

最佳答案

application:didFinishLaunchingWithOptions: 只会在应用程序因通知启动时使用负载信息调用。例如。如果用户点击通知警报(添加到通知中心)或在有效负载中收到带有 content-avialble = 1 的通知(Newsstand 通知)并且前提是您的应用既不在前台也不在后台,则可能会发生这种情况。

如果您的应用在后台时收到通知。如果是报亭通知或者如果用户点击警报的操作按钮,则调用下面的方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

[[UIApplication sharedApplication] applicationState] 不等于 UIApplicationStateActive

在上述情况下,如果用户没有点击通知警报的操作按钮并通过点击它启动应用程序,则 didFinishLaunchingWithOptionsdidReceiveRemoteNotification 都不会被调用。

如果您的应用在前台接收到通知 didReceiveRemoteNotification 被调用 [[UIApplication sharedApplication] applicationState] 将等于 UIApplicationStateActive

对于 notification 中的角标(Badge),如果您的应用未运行,则不会执行任何代码,并且角标(Badge)在应用图标中递增 1。当您启动应用程序(点击应用程序图标)时,通常会调用 didFinishLaunchingWithOptions。 (如果收到通知时应用程序在后台或前台,同上)

所以我认为这涵盖了所有可能的情况。另请注意,背景案例对 iOS SDK >= 4.0

有效

关于objective-c - 应用未运行时推送通知 - launchOptions 字典为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com