从通知中心删除“远程通知”

时间:2012-06-10 19:49:58

标签: ios objective-c push-notification apple-push-notifications

我有以下问题:“我的应用程序从自己的服务器接收一些远程通知,只是为了向用户显示一些实用信息。我没有使用图标徽章,因为我不需要它。如果应用程序用户触摸来自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通知中心删除其远程通知。

问候!

2 个答案:

答案 0 :(得分:1)

随着iOS 10及更高版本的UNUserNotificationCenter的推出,现在可以删除您的应用的几个或所有远程通知。

  

UNUserNotificationCenter documentation

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

答案 1 :(得分:0)

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

如果没有关闭它,那么除了将applicationIconBadgeNumber设置为0之外,还要尝试取消所有本地通知(即使你没有排队任何,如果你先得到它们的列表,然后取消它们,那么再次注册回来)。是清除本地通知可能会影响能够清除远程通知的徽章编号。