APNS:如果应用程序未运行,是不是接收非静默通知?
Posted
技术标签:
【中文标题】APNS:如果应用程序未运行,是不是接收非静默通知?【英文标题】:APNS: Receive non silent notifications if app is not running?APNS:如果应用程序未运行,是否接收非静默通知? 【发布时间】:2017-10-05 09:15:45 【问题描述】:正如我在 APNS 文档中看到的那样,如果应用程序未运行,静默通知将在 didreceiveremotenotification
中处理,但它们的优先级较低。所以有时我的 ios 应用程序不会收到静默通知。
如果应用未运行(不在前台,不在后台),iOS 是否会显示非静默通知?非静默通知会触发didreceiveremotenotification
吗?
【问题讨论】:
【参考方案1】:对于非静默通知,
如果应用处于active
或inactive
状态,将触发didreceiveremotenotification
。不是terminated
或suspended
状态。
在terminated
或suspended
状态的情况下,当用户点击通知应用程序时,将通过调用didFinishLaunchingWithOptions
和launchingOptions
启动有效载荷为Dictionary
。
如果您提供UNNotificationServiceExtension
,则iOS 将在收到通知时调用didReceive(_:withContentHandler:)
,您可以使用它来自定义远程通知的内容,然后再将其发送给用户。
阅读:https://developer.apple.com/documentation/usernotifications/unnotificationserviceextension
如果您提供UNNotificationContentExtension
,那么iOS 将在收到通知时调用didReceive
,您可以使用它自定义加载通知内容。
阅读:https://developer.apple.com/documentation/usernotificationsui/unnotificationcontentextension
附注:
普通通知不能用作静默通知的替代方案/解决方法,因为您不能在应用程序终止状态下使用静默通知。
静默通知旨在将客户端应用程序与服务器上可用的更新内容同步。因为这可以在没有显式用户交互的情况下完成,所以可以使用静默通知。
无声通知必须包含content-available
键,并且不得包含警报、声音或徽章键。
阅读:https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html
在正常通知的情况下,除非手机上的用户设置如此说明,否则无法隐藏通知横幅/警报/声音。
【讨论】:
正常通知会一直显示,如果应用程序处于暂停或终止状态? Yes buddy :) 应用程序状态只会修改通知如何传递给您的应用程序,正如我上面解释的那样。通知将始终根据用户的通知设备设置(如警报或横幅)显示 无法阻止它以编程方式显示给用户以上是关于APNS:如果应用程序未运行,是不是接收非静默通知?的主要内容,如果未能解决你的问题,请参考以下文章
静默推送通知是不是能够唤醒 ios 中处于未运行状态的应用程序?