APNS:如果应用不是 运行,是否接收非静默通知?

APNS: Receive non silent notifications if app is not running?

正如我在 APNS 文档中看到的那样,如果应用不是 运行,静默通知将在 didreceiveremotenotification 中处理,但它们的优先级较低。所以有时我的 iOS 应用程序收不到静默通知。

如果应用不是 运行(不在前台,不在后台),iOS 是否显示非静默通知?非静默通知是否会触发 didreceiveremotenotification?

对于非静音通知,

如果应用程序处于 activeinactive 状态,将触发

didreceiveremotenotification。不是 terminatedsuspended 状态。 在 terminatedsuspended 状态下,用户点击通知应用程序将通过调用 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:

普通通知不能用作 alternative/work 无声通知,因为您不能在应用程序终止状态下使用无声通知。

静默通知用于将客户端应用程序与服务器上可用的更新内容同步。因为这可以在没有明确的用户交互的情况下完成,所以可以使用静默通知。

静默通知必须包含 content-available 键,并且不得包含警报、声音或徽章键。 阅读:https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

在正常通知的情况下,无法隐藏通知 banner/alert/sound 除非 phone 上的用户设置如此。