推送通知 Json 中 "Content-available" 的用途?

The purpose of "Content-available" in Push Notification Json?

目的是发送只有徽章值的推送通知,没有其他内容(没有横幅)。

我集成了 parse sdk 来测试推送通知并发送这个推送通知

{
"alert" :"",
"badge" :"787",
"Content-available" : "1",
"sound" : ""
}

所以推送通知在应用程序处于后台、前台和应用程序被终止时发送。 在带有徽章阀 78 的推送通知到达时擦除一些数据的目的已经成功。 我用 "Content-available" 发送了相同的通知:删除了“1”,但一切正常。

我对 "Content-available" 的理解是,将它的值设置为 1 将允许没有警报值的推送通知。

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

谢谢

如果您为该键提供值 1,(如果用户打开您的应用程序是在后台或已恢复)将调用 application:didReceiveRemoteNotification:fetchCompletionHandler:

根据RemoteNotifications Programmingcontent-available定义是

Provide this key with a value of 1 to indicate that new content is available. Including this key and value means that when your app is launched in the background or resumed, application:didReceiveRemoteNotification:fetchCompletionHandler: is called.

(Newsstand apps are guaranteed to be able to receive at least one push with this key per 24-hour window.)

简短回答:对我来说,我只是使用 "content_available" : "1",或 "content_available" : true 用于恢复 iOS 中的 background/quit 模式。请注意,在我的例子中,它是下划线而不是连字符分隔的。

在我的特定场景中,我的应用程序是在 react-native 中制作的,我使用 https://rnfirebase.io 进行推送通知

这里有一个完整的解释: https://rnfirebase.io/messaging/usage#data-only-messages

在IOS content_available" : "1

相当于Android 优先级:'high',

在这两种情况下,当应用程序从后台恢复时,后台消息将调用 onMessage() 方法,因此程序可以从那里 运行 一些特定代码。

这里是使用 CURL 发送推送通知的示例:

#curl -H "Content-type: application/json" -H "Authorization:key=#MyAuthHashCode#" -X POST -d '{ "to": "/ topics/#thetopicnumber#","notification": { "title": "msg for topic", "body": "bodytext", "content_available": "true" }}' https://fcm.googleapis.com/fcm/send

TL;DR:

  • "content-available" : 0:默认;您的应用程序不会收到通知 delivery 的通知 除非 该应用程序在前台.
  • "content-available" : 1:您的应用程序收到通知交付如果它在前台或后台(应用程序将被唤醒)。

您唯一需要使用 "content-available" : 1 的时间是 background update notifications:

Background update notifications improve the user experience by giving you a way to wake up your app periodically so that it can refresh its data in the background. When apps do not run for extended periods of time, their data can become outdated. When the user finally launches the app again, the outdated data must be replaced, which can cause a delay in using the app. A background update notification can alert the user or it can occur silently.

但是,并不总是意味着此通知将对用户不可见

If there are user-visible updates that go along with the background update, you can set the alert, sound, or badge keys in the aps dictionary, as appropriate.

默认情况下,"content-available" 设置为 0。除非应用程序在前台,否则这些“常规”通知不会立即通知应用程序。相反,这些“常规”通知通过通知上的“触觉触摸”通知应用 when a user taps on them or has selected an option

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

Unlike the application(_:didReceiveRemoteNotification:) method, which is called only when your app is running in the foreground, the system calls this method when your app is running in the foreground or background.

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