0

我有以下问题:“我的应用程序从自己的服务器接收一些远程通知,只是为了向用户显示一些实用信息。我没有使用图标徽章,因为我不需要它。如果应用程序用户触摸遥控器来自 iOS 通知中心的通知我的应用程序可以毫无问题地捕获它,我收到选项,application:didFinishLaunchingWithOptions:或者,如果应用程序打开,我会使用选择器捕获远程通知application:didReceiveRemoteNotification:。但是,现在我想从 iOS 通知中心删除这些通知,因为它只是一条消息,我一直在其他帖子中寻找答案,我已经在我的应用程序中尝试了这些解决方案,但它们不起作用”

接下来是一些解决方案:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {  
    [application cancelAllLocalNotifications];  
    application.applicationIconBadgeNumber = 0;  
    ...  
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    ...  
    if (launchOptions) {  
        [application cancelAllLocalNotifications];  
        application.applicationIconBadgeNumber = 0;  
    }  
    ...  
}

远程通知仍然在 iOS 通知中心,我怎样才能在没有任何棘手代码或 iOS SDK 问题的情况下从那个地方删除?我认为这不可能是因为 Tweetbot 应用程序在您进入应用程序后会从 iOS 通知中心删除其远程通知。

问候!

4

2 回答 2

2

随着UNUserNotificationCenteriOS 10 及更高版本的引入,现在可以删除应用程序的少数或全部远程通知。

UNUserNotificationCenter 文档

使用此类的共享单例实例,可以管理设备上传递的远程通知。具体来说,可以使用以下方法: func removeDeliveredNotifications(withIdentifiers: [String])如果要删除应用程序的特定通知,或者func removeAllDeliveredNotifications()删除应用程序的所有通知。

于 2017-05-12T16:50:51.507 回答
0

首先确保您没有在控制面板中将徽章通知设置为关闭(我注意到如果徽章有一个数字开头,那么徽章在控制面板中被关闭,它不能设置为0) .

如果它没有关闭,那么除了将 applicationIconBadgeNumber 设置为 0 之外,还可以尝试取消所有本地通知(即使您没有排队,如果您先获取它们的列表,然后取消它们,然后重新注册它们) . 是的,清除本地通知可能会影响清除远程通知的徽章编号。

于 2012-06-11T02:57:35.060 回答