iPhone如何以编程方式访问通知中心

根据苹果指南:

如果在运行iOS的设备上点击应用程序图标,应用程序将调用相同的方法,但不提供有关通知的信息。 如果应用程序图标在运行的计算机上单击

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction.html#//apple_ref/doc/uid/TP40008194

据我所知,似乎无法检测到应用程序图标被点击时的通知。

所以我试图以编程方式检索通知中心,但似乎也是不可能的。

以编程方式检索通知中心是不可能的吗?

我想要做的是检测是否收到通知,即使应用程序在后台。

以编程方式检索通知中心是不可能的吗?

不,使用任何公共API都是不可能的。

您的应用程序对通知中心的当前状态不可知,因为它们是两个分离的实体。

无论如何,正如AdamG所指出的那样,你可以在iOS 7中实现

application:didReceiveRemoteNotification:fetchCompletionHandler: 

根据文档 ,这是不pipe你的应用程序的状态(所以即使不运行或在后台)调用。

为了使用它,你必须支持remote-notification后台模式。 就是这样:

在Xcode 5及更高版本中,您可以从项目设置的function选项卡声明您的应用程序支持的背景模式。 启用背景模式选项将UIBackgroundModes键添加到您的应用的Info.plist文件。 select一个或多个checkbox将相应的背景模式值添加到该键。

现在,尽pipe您仍然无法以编程方式访问通知中心,但您可以随时跟踪通知。

一个嘲弄的实施将如下:

 - (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); } 

我很想知道iOS8是否会在这里改变任何东西,并让我们访问定制iOS8应用程序的通知中心小部件?

加文

在iOS 7下,有一种方法可以做到这一点。

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler 

然后做任何你需要做的应用程序来处理通知,并确保注册,它是由电话接收。

当推送通知到达时,系统会向用户显示通知,并在后台启动应用程序(如果需要),以便可以调用此方法。 使用此方法下载与推送通知相关的任何数据。 当你的方法完成后,调用处理程序参数中的块。

在这里find。