Ios 是否可以阻止显示远程通知?
我希望更好地控制向用户显示的通知,并有选择地使其中一些通知静音。为了做到这一点,我在我的应用程序中实现了一个,它允许我拦截和修改通知,即使我的应用程序没有运行。然而,问题是,即使我不调用Ios 是否可以阻止显示远程通知?,ios,swift,apple-push-notifications,Ios,Swift,Apple Push Notifications,我希望更好地控制向用户显示的通知,并有选择地使其中一些通知静音。为了做到这一点,我在我的应用程序中实现了一个,它允许我拦截和修改通知,即使我的应用程序没有运行。然而,问题是,即使我不调用didceive(:withContentHandler:),系统仍会在大约30秒后显示远程通知。如何防止这种情况发生?从iOS 11开始,无法使用UnnotificationService Extension来禁止显示推送通知 在WWDC 17中,Teja明确表示这样的事情不能做(从22:17分开始): 所有工
didceive(:withContentHandler:)
,系统仍会在大约30秒后显示远程通知。如何防止这种情况发生?从iOS 11开始,无法使用UnnotificationService Extension来禁止显示推送通知
在WWDC 17中,Teja明确表示这样的事情不能做(从22:17分开始):
所有工作都应该是修改或增强此通知。服务扩展也无权删除此通知或阻止其显示。
此通知将发送到设备。如果您想在后台启动应用程序并运行其他处理,则应发送静默通知。您还可以发送静默通知并在后台启动您的应用程序,如果您希望提供有条件通知,您的应用程序可以确定是否计划本地通知
从iOS 13.3中,通知服务授权允许过滤通知(如Avirharsh Shukla评论中所指出的)。仅为完整起见:
当应用程序未处于活动状态时(在后台或已被杀死):无法抑制任何推送通知
但如果应用程序在前台处于活动状态,则可以抑制推送通知
除了使用应用程序扩展,还需要从UNUserNotificationCenterDelegate
实现willPresent
功能
在这里可以过滤通知,并在completionHandler中返回允许如何显示通知:
•不显示任何内容:completionHandler([])
•仅显示警报:completionHandler([.alert])
•用声音显示警报:completionHandler([.alert,.sound])
•等等
我们希望显示本地通知,但从未显示推送通知,因为我们使用自定义UI在应用程序中处理它们:
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
if response.notification.request.trigger is UNPushNotificationTrigger {
completionHandler([])
} else {
completionHandler([.alert, .badge])
}
}
很容易错过上面@Lepidopteron的一条评论,错误地认为根本没有办法抑制推送通知——确实有,这被称为静默推送通知。但它也有一些局限性。如中所述,您每小时只能发送其中的2-3个,并且没有交货保证。swift 5 iOS 11.x
我让这个工作,但它是一个舞蹈位。基本上,您需要向不想发送通知的设备发送静默通知,然后让该设备在发送通知之前检查不应发送通知的设备列表
willPresent也很好用。。。但是,正如前面提到的,只有当应用程序在前台运行时才可以。显然,它也必须检查其禁用设备列表。从iOS 13.3开始,这是可能的。
您可以阻止它显示在用户通知扩展中。
您需要做的就是从Apple获得通知服务授权,并将apns推送类型标题字段设置为警报
您可以查看以下所有详细信息:静默推送不适用于您的特定情况?@鳞翅目昆虫静默通知被限制,苹果建议每小时使用的次数不要超过几个。嗯,因此,在您的情况下,您需要每小时频繁发送推送通知,但希望超过发送给用户的通知?您能在服务器端修复它,以便它从那里发送摘要吗?@boidkan这不会有什么区别,因为我仍然无法删除以前收到的远程通知。问题是为什么不能?在同一个视频中,他们明确表示扩展不能阻止通知的显示。但是为什么没有说为什么不呢。他们是否打算采用其他机制?在我们的案例中,我们有多个轮班的员工使用同一部电话。手机可能会收到以前用户的通知。扩展可以过滤掉它们,但我们无法隐藏它。我们能做的最好的事就是修订。这远非理想。我的情况和@David所说的一样,有人找到了解决办法吗?看看这个