推送通知Json中"内容可用"的目的?

Nan*_*ari 11 push-notification apple-push-notifications ios silent-notification

目的是发送仅带徽章值的推送通知,而不发送任何其他内容(无横幅).

我集成了解析sdk以测试推送通知并发送此推送通知

{
"alert" :"",
"badge" :"787",
"Content-available" : "1",
"sound" : ""
}
Run Code Online (Sandbox Code Playgroud)

所以推送通知在应用程序处于后台,前台和应用程序被杀时发送.用徽章阀78在推送通知到达时擦除一些数据的目的成功.我发送了与"Content-available"相同的通知:删除了"1",但是之前一切正常.

我对"内容可用"的理解是,将其值设置为1将允许推送通知而没有警报值.

所以我很困惑,或者我想知道这个推送通知JSon中"Content-available"的含义.

谢谢

kga*_*dis 24

长话短说:

  • "content-available" : 0:默认;除非应用程序位于前台,否则您的应用程序不会收到通知发送的通知。
  • "content-available" : 1:如果您的应用程序位于前台或后台(应用程序将被唤醒),则会通知您的应用程序已发送通知。

您唯一需要使用的"content-available" : 1后台更新通知

后台更新通知为您提供了一种定期唤醒应用程序的方法,以便它可以在后台刷新其数据,从而改善用户体验。当应用程序长时间不运行时,其数据可能会过时。当用户最终再次启动应用程序时,必须替换过时的数据,这可能会导致应用程序的使用延迟。后台更新通知可以提醒用户,也可以静默发生。

但是,这并不总是意味着该通知对用户不可见:

如果存在与后台更新一起出现的用户可见更新,您可以根据需要在 aps 字典中设置警报、声音或徽章键。

默认情况下,"content-available"设置为0。这些“常规”通知不会立即通知应用程序,除非应用程序位于前台。相反,当用户点击这些“常规”通知或通过通知上的“触觉触摸”选择选项时,这些“常规”通知会通知应用程序。

后台更新通知发送至application(_:didReceiveRemoteNotification:fetchCompletionHandler:)

application(_:didReceiveRemoteNotification:)与仅当您的应用程序在前台运行时才会调用该方法不同,当您的应用程序在前台或后台运行时系统会调用此方法。

注意:“您的应用程序”和“设备”之间有一个关键区别:如果有效负载请求显示通知,设备将显示通知,但这并不总是意味着“您的应用程序”将在交付时收到通知此通知(也称为“您的应用程序”代码将运行)。这就是"content-available": "1"出现的地方:“您的应用程序”将始终收到通知,除非它被终止。


Mid*_* MP 7

如果您为此键提供值1(如果用户打开,则应用程序处于后台或已恢复),将调用application:didReceiveRemoteNotification:fetchCompletionHandler:.

根据RemoteNotifications编程 content-available定义是

为此键提供值1以指示新内容可用.包含此键和值意味着当您的应用程序在后台启动或恢复时,应用程序:didReceiveRemoteNotification:fetchCompletionHandler:被调用.

(报亭应用程序保证每24小时窗口至少能够使用此密钥进行一次推送.)