gpt4 book ai didi

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

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

根据 Apple 指南:

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

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

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

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

是否无法以编程方式检索通知中心?

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

最佳答案

Is it impossible to retrieve the notification center programmatically?

不,任何公共(public) API 都不可能。

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

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

application:didReceiveRemoteNotification:fetchCompletionHandler:

根据documentation , 无论您的应用程序处于何种状态都会被调用(因此即使它未运行或处于后台)。

要使用它,您必须支持remote-notification 后台模式。方法如下:

In Xcode 5 and later, you declare the background modes your app supports from the Capabilities tab of your project settings. Enabling the Background Modes option adds the UIBackgroundModes key to your app’s Info.plist file. Selecting one or more checkboxes adds the corresponding background mode values to that key.

现在,虽然您仍然无法以编程方式访问通知中心,但您可以跟踪通知的到来。

模拟的实现如下:

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

关于iPhone如何以编程方式访问通知中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216016/

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