正如我在APNS文档中看到的那样,如果应用程序未运行,则会在didreceiveremotenotification
中处理静默通知,但它们的优先级较低。因此,有时我的iOS应用程序不会收到静默通知。
如果应用未运行(不在前台,不在后台),iOS是否显示非静默通知?并且非静默通知会触发didreceiveremotenotification
吗?
答案 0 :(得分:3)
对于非静默通知,
如果应用处于didreceiveremotenotification
或active
状态,则会触发 inactive
。不在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
<强> P.S:强>
正常通知不能用作替代/解决静默通知,因为您无法在应用已终止状态下使用静默通知。
无提示通知旨在将客户端应用与服务器上提供的更新内容同步。由于这可以在没有显式用户交互的情况下完成,因此可以使用静默通知。
无提示通知必须包含content-available
密钥,且不得包含警报,声音或徽章密钥。
阅读:https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html
如果是正常通知,除非用户在手机上设置,否则无法隐藏通知横幅/警告/声音。