【问题标题】:The purpose of "Content-available" in Push Notification Json?推送通知 Json 中“内容可用”的目的?
【发布时间】:2015-03-02 21:05:31
【问题描述】:

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

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

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

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

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

所以我很困惑,或者我错过了一些东西来了解这个推送通知 JSon 中“内容可用”的含义。

谢谢

【问题讨论】:

  • 另见here。对于静默通知,您必须始终将其设置为 1。对于远程通知,您不需要它...除非您希望远程通知在后台下载一些东西

标签: ios push-notification apple-push-notifications silent-notification


【解决方案1】:

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

根据RemoteNotifications Programmingcontent-available定义是

为这个键提供值 1 表示新内容是 可用的。包含这个键和值意味着当你的应用是 在后台启动或恢复, 应用程序:didReceiveRemoteNotification:fetchCompletionHandler:是 调用。

(报亭应用保证能够收到至少一次推送 每 24 小时窗口使用此密钥。)

【讨论】:

  • 我的应用程序不是报亭应用程序,我可以为我的应用程序实现此功能吗?谢谢@Midhun(对不起,我喜欢你的回答,但由于分数低无法投票)
  • @NandkishorChaudhari:它适用于所有应用程序,而不是报亭应用程序,报亭应用程序有这种特殊情况。
  • @NandkishorChaudhari:我在回答中添加了更多信息,希望对您有所帮助
  • @NandkishorChaudhari:如果您需要在通知到达时进行一些下载或一些处理,最好包含其他不包含该密钥的内容。
  • 警报和声音字段不是强制性的。对于内容使用,您需要查看文档。我认为他们不会因此而拒绝您的应用。
【解决方案2】:

简短回答:对我来说,我只是使用 "content_available" : "1""content_available" : true 来恢复 iOS 中的后台/退出模式。请注意,在我的情况下,它是下划线,而不是连字符分隔。

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

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

在IOS中 content_available" : "1

在 Android 中等效 优先级:'高',

在这两种情况下,当应用程序从后台恢复时,后台消息都会调用 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

【讨论】:

    【解决方案3】:

    TL;DR:

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

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

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

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

    如果有用户可见的更新伴随着后台更新,您可以根据需要在 aps 字典中设置警报、声音或徽章键。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-06-29
      • 1970-01-01
      • 2018-06-26
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多