我很清楚你想在这个主题中实现什么。但是,您的代码将不起作用。
[application cancelAllLocalNotifications];
“cancelAllLocalNotifications”仅适用于本地通知 - 由应用程序安排并由同一设备上的 iOS 交付。
正如苹果所讨论的,当您的应用程序处于后台时,APNs 会处理远程通知。如果您的应用程序处于前台或当前处于活动状态,您的代理将管理通知。
尝试在应用程序中处理通知:didReceiveRemoteNotification
这是一个示例:(您可以从此处管理有效负载):
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
for (id key in userInfo) {
NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
}
}
您还可以检查您的应用程序是否处于前台或您的应用程序是否处于活动状态:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
if(application.applicationState == UIApplicationStateActive) {
// app active.
}
else {
// app not active
}
}