我有以下问题:“我的应用程序从自己的服务器接收一些远程通知,只是为了向用户显示一些实用信息。我没有使用图标徽章,因为我不需要它。如果应用程序用户触摸来自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通知中心删除其远程通知。
问候!
答案 0 :(得分:1)
随着iOS 10及更高版本的UNUserNotificationCenter
的推出,现在可以删除您的应用的几个或所有远程通知。
使用此类的共享单例实例,可以在设备上管理传递的远程通知。具体而言,可以使用以下方法:
func removeDeliveredNotifications(withIdentifiers: [String])
如果您要删除应用的特定通知,或func removeAllDeliveredNotifications()
删除应用的所有通知。
答案 1 :(得分:0)
首先请确保您没有在控制面板中设置徽章通知关闭(我注意到如果徽章有一个数字开头,那么在控制面板中关闭徽章,它不能设置为0)。
如果没有关闭它,那么除了将applicationIconBadgeNumber设置为0之外,还要尝试取消所有本地通知(即使你没有排队任何,如果你先得到它们的列表,然后取消它们,那么再次注册回来)。是清除本地通知可能会影响能够清除远程通知的徽章编号。