cordova、Firebase、FCM 插件 - 在 iOS 的通知栏中不显示通知

Posted

技术标签:

【中文标题】cordova、Firebase、FCM 插件 - 在 iOS 的通知栏中不显示通知【英文标题】:cordova, Firebase, FCM Plugin - Not showing notifications in notification bar on iOS 【发布时间】:2016-12-23 14:11:59 【问题描述】:

我正在将此插件与 cordova 一起使用:cordova-plugin-fcm 来获取通知。

它在 android 上运行良好。

问题在于 ios,当应用程序处于前台时,通知会到达。但是当应用程序关闭或在后台时,通知不会显示在通知栏中,但是当我打开应用程序时,我可以看到通知到达并且我生成的弹出窗口被打开。

但我确实需要通知才能在锁定屏幕和通知栏中显示。

这是我要发送到 Firebase API 的内容:

/ POST to https://fcm.googleapis.com/fcm/send

我在正文中发送这个:


  "to" : <USER_TOKEN>,
  "alert":"Test",
  "notification": 
    "alert":"Test test",
    "title": "Notification test",
    "text": "Testing notification text"
  ,
  "priority": 10,
  "content_available": true

我也尝试过使用"priority": "high" 并得到相同的结果。

通知到达,但仅在我打开应用程序时显示。我什至没有在通知栏或锁定屏幕中看到它。

我还尝试在正文中添加"aps" 属性,其中包含所有信息.. 不起作用。

我希望有人可以对此有所了解..

PS:iOS v10.1.1

PS2:适用于所有安卓设备。

我已经阅读了社区的一些答案,但似乎不起作用:

Firebase API is not sending push notifications when using the API

iOS not receiving Firebase Push Notification sent through the API

感谢您的宝贵时间。

【问题讨论】:

嗨@Ariel。我正在尝试使用 Intel XDK 使这个插件工作并发布这个问题:***.com/questions/42199487/…。你能帮我解决这个问题吗?我只是想知道我做错了什么。 @Ariel 我面临同样的问题,iOS 中的通知未显示在通知栏中。请帮我。我被困在这个任务中。 @EktaPadaliya 我在 XCode 配置、检查功能、启用推送通知以及配置正确证书时遇到问题。我的问题在那里,在功能配置部分,我没有启用推送通知。一旦我启用它们,它们就会开始出现。 【参考方案1】:

您有没有在 console.firebase.google.com 上上传您的开发 APNs 证书,

将您的 APNs 证书上传到 Firebase。如果您还没有 APNs 证书,请参阅配置 APNs SSL 证书。

在 Firebase 控制台的项目中,选择齿轮图标,选择项目设置,然后选择云消息传递选项卡。 为您的开发证书、生产证书或两者选择上传证书按钮。至少需要一个。 对于每个证书,选择 .p12 文件,并提供密码(如果有)。确保此证书的捆绑包 ID 与您的应用的捆绑包 ID 匹配。选择保存。

你可以参考链接https://firebase.google.com/docs/cloud-messaging/ios/client

【讨论】:

我正在使用 cordova-plugin-firebase 0.1.18 “Google Firebase 插件适用于 ios 和 android 感谢您的回答,抱歉耽搁了,其他一些项目优先。我上传了 .p12 证书(开发和专业版),仍然没有改进的迹象。如果应用程序在前台,我会收到通知,但是当 iPhone 被阻止时,我在屏幕或通知栏中什么都看不到。 好的,解决了,怎么样?上传 .p12 和 .. 不要笑:XCode -> Capabiltiies -> 推送通知(启用)。【参考方案2】:

我遇到了同样的问题, 首先,你需要使用“body”而不是“text”; 对于优先级,您应该始终使用“高”或“正常”,对于推送通知,默认值应该是高。 如果您忘记在 Json 字符串的通知对象中使用“标题”和“正文”键,iOS 显然不会将通知添加到通知列表中。

如果您想要一些自定义值,则添加一个具有自定义值的数据对象。像这样:

    "data":
     "data1":"value1",
     "data2":"value2"
  

所以试试这样的:


  "to" : <USER_TOKEN>, //or /topics/<topicname> or /topics/all"
   "notification": 
    "title": "Notification test",
    "body": "Testing notification text"
  ,
      "priority": high,
      "sound":"default", //not using this one wont make your iOS device use sound
      "click_action":"FCM_PLUGIN_ACTIVITY",
      "icon":"fcm_push_icon"

结合数据对象:

     
          "to" : <USER_TOKEN>, //or /topics/<topicname> or /topics/all"
          "notification": 
            "title": "Notification test",
            "body": "Testing notification text"
          ,
          "data":
             "data1":"value1",
             "data2":"value2"
          ,
          "priority": high,
          "sound":"default", //not using this one wont make your iOS device use sound
          "click_action":"FCM_PLUGIN_ACTIVITY",
          "icon":"fcm_push_icon"
      

希望对我有帮助

【讨论】:

还要确保您的开发 APNs 证书已上传,但这应该可以正常工作,假设它已经在应用程序中工作。 谢谢@basco05,已经解决了这个问题,我忘记在“功能”中的设置中启用推送通知,这解决了我遇到的问题。

以上是关于cordova、Firebase、FCM 插件 - 在 iOS 的通知栏中不显示通知的主要内容,如果未能解决你的问题,请参考以下文章

Cordova Android 应用程序不接收来自服务器端的 FCM 通知

Firebase 推送通知与 PhoneGap Build 使用 cordova-plugin-fcm

安装 fcm 插件时出现cordova错误

使用 cordova-plugin-fcm 插件推送通知在 iOS 生产中不起作用

IONIC android FCM 通知

cordova-plugin-fcm 在 iOS 上不起作用