适用于iOS的Firebase FCM静音推送通知

iOS上的静音通知有问题。

当我的申请处于后台时,我不会收到FCM发送的无声通知。 但是,如果我尝试直接发送到APNS,则会成功收到通知。

这是发送给FCM的JSON:

{ "to" : "", "priority": "high", "content_available": true, "data" : { "" : "", "" : "" } 

}

这是直接发送给APNS的JSON:

 { "aps": { "content-available": 1 }, "": "", "": "" } 

我已经尝试删除“优先级”键,因为我看到有人说如果已经设置了“content_available”,我就不应该设置优先级。 它没用。

  1. 我在XCode> Capabilities中启用了“推送通知”。
  2. 我在XCode>function的后台模式中选中了“远程通知”。
  3. 当应用程序处于前台时,有时当应用程序处于后台时,FCM通知正常工作。

删除“通知”键值对并添加“content_available”:true

它看起来像这样

 { "to" : "...", "priority": "high", "content_available": true, "data" : { .... } } 

这应该使它成为一个静默的APNS,你需要处理相应的APNS委托方法。

您需要通过代理处理此问题有关详细信息,请参阅此firebase文档: https : //firebase.google.com/docs/cloud-messaging/concept-options

我找到了一个解决方法。 我在“通知”字段中为“声音”设置了一个空值,即使应用程序在后台,也会传送静默通知。

 { "to" : "...", "priority": "high", "notification": { "sound": "" }, "data" : { .... } } 

我的预感是,苹果公司不允许以“高”优先级和某种方式“通知”的无声通知:{“声音”:“”}欺骗APNS,这个通知不是沉默的通知。

请按照文档中的说明,按照服务器端的文档进行 json的设置。 我之前遇到过类似的问题并解决了这个问题。

  { "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "priority" : "high", "notification" : { "body" : "This week's edition is now available.", "title" : "NewsMagazine.com", "icon" : "new" }, "data" : { "volume" : "3.21.15", "contents" : "http://www.news-magazine.com/world-week/21659772" } } 

你错过了通知密钥。 apns使用它来获取背景通知。