0

我有一个应用程序在后台接收远程 APN 通知。如果通知样式是横幅,则效果很好。

但是,当通知样式为警报并收到 10 个 APN 时,用户必须在为第一个警报选择“启动”后关闭后续警报框。

应用程序启动后有什么方法可以清除警报吗?

我在 applicationDidBecomeActive: 和 applicationWillEnterForeground 中尝试了以下内容:

[application cancelAllLocalNotifications];
application.applicationIconBadgeNumber = 0;

但它不起作用。其他人有这个问题吗?

另外,我知道这是可能的,因为 WhatsApp 能够做到这一点。

谢谢!

4

1 回答 1

0

我很清楚你想在这个主题中实现什么。但是,您的代码将不起作用。

[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
    }
}
于 2012-06-07T22:53:45.037 回答