根据Apple指南:
如果在运行iOS的设备上点击了应用程序图标,则该应用程序将调用相同的方法,但不提供有关通知的信息。如果在运行计算机上单击应用程序图标
据我所知,当点击应用程序图标时,似乎无法检测到通知。
因此,我尝试以编程方式检索通知中心,但这似乎是不可能的。
是否不可能以编程方式检索通知中心?
我想做的是检测即使应用程序在后台时是否收到通知。
是否不可能以编程方式检索通知中心?
不,任何公共API都不可能。
您的应用与通知中心的当前状态无关,因为它们是两个分离的实体。
无论如何,正如AdamG指出的那样,您可以在iOS 7中实施
application:didReceiveRemoteNotification:fetchCompletionHandler:
根据文档说明,无论您的应用程序处于什么状态(即使它没有运行或在后台运行),都会调用该函数。
为了使用它,您必须支持remote-notification
后台模式。就是这样:
在Xcode 5和更高版本中,您可以从项目设置的“功能”选项卡中声明应用程序支持的后台模式。启用“后台模式”选项,会将UIBackgroundModes键添加到应用程序的Info.plist文件中。选择一个或多个复选框会将相应的背景模式值添加到该键。
现在,尽管您仍然无法以编程方式访问通知中心,但是可以在通知到来时对其进行跟踪。
模拟的实现将如下所示:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
// Hey we got a notification!
// Now we have 30 seconds to do whatever we like...
// ...and then we have to call the completion handler
completionHandler(UIBackgroundFetchResultNoData);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句