【问题标题】:Remove "remote notifications" from notification center从通知中心删除“远程通知”
【发布时间】:2012-06-10 19:49:58
【问题描述】:

我有以下问题:“我的应用程序从自己的服务器接收一些远程通知,只是为了向用户显示一些实用信息。我没有使用图标徽章,因为我不需要它。如果应用程序用户从 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 反对票这似乎对我也不起作用。我已经尝试过 [UIApplication sharedApplication].applicationIconBadgeNumber = 0;和 [[UIApplication sharedApplication] cancelAllLocalNotifications];有什么建议吗?

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


【解决方案1】:

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

UNUserNotificationCenter documentation

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

【讨论】:

    【解决方案2】:

    首先确保您没有在控制面板中将徽章通知设置为关闭(我注意到如果徽章以数字开头,那么徽章在控制面板中已关闭,无法设置到 0)。

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

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多