使用 API 时 Firebase API 不发送推送通知

Posted

技术标签:

【中文标题】使用 API 时 Firebase API 不发送推送通知【英文标题】:Firebase API is not sending push notifications when using the API 【发布时间】:2016-07-20 11:12:18 【问题描述】:

我正在从 Parse 迁移到 Firebase,并且遇到了我们的 ios 应用程序的问题。 Firebase API 不会向 ios 应用发送推送通知。 这是我发送给https://fcm.googleapis.com/fcm/send的内容

 
 "to: "<registration token>",
 "priority": "high",
 "data": 
     "customId": "<my custom id>",
     "badge": 1,
     "sound": "cheering.caf",
    "alert": "New data is available"
  

服务器返回成功


    "multicast_id":6917019914327105115,
    "success":1,
    "failure":0,
    "canonical_ids":0,
    "results":["message_id":"0:1468961966677585%f0f84693f9fd7ecd"]

但是推送没有送达。 如果我使用 Firebase 仪表板发送推送,即使我直接使用 Token 定位,推送也会传递。

我看到另一个开发者在另一个 *** 问题中抱怨 Can't send push notifications using the server API

我尝试了他们添加 "priority": "high" 的解决方案,但并没有解决问题。但它给了我一个线索:他们也在使用 dev/sandbox 推送证书。

我怀疑 Dashboard 可以使用 ios Development 证书,但 API 不能。该问题仅发生在 ios 设备上,因为 android 应用正在通过 API 获取推送。

是否有人可以使用 API 和开发证书发送推送?

【问题讨论】:

我遇到了同样的问题,但在 Android 中 【参考方案1】:

Firebase 支持人员与我联系并找出了问题所在

我的推送负载缺少通知对象

 
 "to": "<registration token>",
 "priority": "high",
 "notification": 
    "title": "Your Title",
    "text": "Your Text"
  
 "data": 
     "customId": "<my custom id>",
     "badge": 1,
     "sound": "cheering.caf",
    "alert": "New data is available"
  

希望对其他人有所帮助

【讨论】:

请注意,当您的应用连接到 FCM 时,您可以发送仅数据消息,即应用在前台 您可能需要设置 "content_available":"true" 才能让 iOS 在后台运行。 firebase.google.com/docs/cloud-messaging/concept-options 在ios中发送通知需要text和title参数。 太棒了!顺便说一句...在通知中您使用“文本”,但是,Google 文档在旧 API 和新 API 上都使用“正文”...只是需要考虑的事情 (firebase.google.com/docs/cloud-messaging/http-server-ref)【参考方案2】:

您使用 Firebase API 发送到 https://fcm.googleapis.com/fcm/send 的对象应如下所示:


  "notification":
    "title":"Notification title",  //Any value
    "body":"Notification body",  //Any value
    "sound":"default", //If you want notification sound
    "click_action":"<activity_name>",  //Must be present for Android
    "icon":"fcm_push_icon"  //White icon Android resource
  ,
  "data":
    "param1":"value1",  //Any data to be retrieved in the notification callback
    "param2":"value2"
  ,
    "to":"/topics/topicExample", //Topic or single device
    "priority":"high", //If not set, notification won't be delivered on completely closed iOS app
    "restricted_package_name":"" //Optional. Set for application filtering

如果您的问题已经解决,请不要忘记标记它。

【讨论】:

以上是关于使用 API 时 Firebase API 不发送推送通知的主要内容,如果未能解决你的问题,请参考以下文章

通过 Firebase 通知 API 发送消息时,是不是可以获得推送通知统计信息,例如交付次数和打开次数?

无法使用服务器 API 发送推送通知

如何根据ios中的api响应时间向用户发送通知

在javascript和axios中为来自前端的每个api调用发送firebase身份验证令牌

使用Firebase Cloud Function的POST请求发送SMS

Laravel API - 使用 Firebase FCM 向 android 和 iOS 客户端应用程序发送通知