当iOS应用程序被杀死时,处理程序可以不显示远程通知吗?



我的要求是防止显示远程通知。
如果应用程序在前台或后台,我可以通过以下方法处理此问题:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
//logic hide notification here
}
public func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
//logic hide notification here
}

当应用程序被杀死时,我正在尝试在UNNotificationServiceExtension中处理逻辑,但它不起作用:

override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
// logic hide notification here
}

我已阅读本文:是否可以阻止显示远程通知? 它说苹果不允许这样做,这是对的吗?

是的,这是正确的。

您无法捕获远程通知并将其隐藏。不接收远程通知的最佳方法是对权限说"不"。如果您的服务器发送远程通知,您可以将其配置为在不需要时不发送通知。

发送通知而不显示通知的另一种方法是发送"静默通知"。它允许您接收通知,获取其内容并做您想做的事(您只有 30 多岁(。我认为,如果需要,您可以发送无声通知、检查内容并发送本地通知,但我不确定。

您是否正在尝试完全删除通知?(前景和背景? 如果是这种情况,那么您应该要求后端服务向您发送静默通知,而不是普通通知。你不应该自己处理。

最新更新