我正在使用 `fcm` gem 发送推送通知,它适用于 android 但不适用于 IOS

Posted

技术标签:

【中文标题】我正在使用 `fcm` gem 发送推送通知,它适用于 android 但不适用于 IOS【英文标题】:I am using `fcm` gem to send push notification it is working fine for android but not for IOS 【发布时间】:2019-10-27 07:45:04 【问题描述】:

我正在开发需要向 ios 设备发送通知的后端。我已经正确配置了 APN 证书密码和 Firebase 上的所有内容,但有时通知仍会从简单脚本发送到 IOS,但有时它不会发送。但是在 Ruby on rails 上它永远不会发生。我已正确检查并包含所有文件。仍然遇到这个问题。

以下是我为发送通知而编写的脚本,它从用户表中获取设计令牌。

user = User.find(86)
  devises = user.devises
     devises.each do |d|
     response = send_notification(title, body, d, action, type)
  end

  fcm = FCM.new("my_fcm_server_key_log_key_from_firebase")
  registration_ids = ["#devise.token.to_s"]
  options =  "data": 
      "title": title,
      "body": body,
      "msg_action": action,
      "msg_type": type,
    ,
       "badge": 1,
       "alert": "dasdas",
       "sound": "default" 

  response = fcm.send(registration_ids, options)
    puts response.inspect

响应成功,但仍然无法到达手机,但是当我对所有内容进行硬编码并使用简单脚本时,它也可以从服务器和本地系统正常运行,但在 Ruby on rails 中却不行。在 android 上它运行良好,没有任何问题。即使在几个小时后使用简单的脚本 IOS 也停止使用简单的 ruby​​ 脚本。

如果您有任何适用于 ruby​​ on rails 的工作示例,请告诉我。

【问题讨论】:

与 Rails 问题无关,请在 firebase 和 ios app 中检查 ios 配置 当我使用 firebase 发送通知时,它会从他们的仪表板正确发送。 我遇到了同样的问题,在 firebase 控制台工作,但不会从 rails 发送 ios。你有没有发现问题? 我回答了我为解决问题所做的工作,但主要是测试和尝试,库中没有问题,只是推送通知的格式,开发人员上传到 FCM。 【参考方案1】:

我必须在 FCM 上为 IOS 应用上传认证文件,通常是开发者许可证 p12 或 p8 文件,需要在您的新应用项目上上传。

我必须更改我为 IOS 发送的格式,现在我有条件,如果它是 android,而不是有不同的格式,我有 IOS,而不是我放了不同的格式,只有很小的变化。

if devise.platform == "iOS"
   options =  "notification": 
     "title": title,
     "body": body,
     "msg_action": action,
     "msg_type": type,
      ,
        "badge": 1,
        "alert": "dasdas",
        "sound": "default" 
    else
      options = 
        "data": 
        "title": title,
        "body": body,
        "msg_action": action,
        "msg_type": type,
        "click_action": ".DashBoardActivity",
        ,
      
  end

另一点需要注意的是你检查了你的应用程序日志,有时当应用程序没有运行时,你会收到推送通知,但如果应用程序正在运行,那么你不会得到任何显示,但在后台你会收到推送通知,您必须使用 IOS 的应用程序编码来处理。我添加了badge, alert, sound 这些是针对 IOS 的。

给出了解释@Brad发布的cmets的答案。

【讨论】:

以上是关于我正在使用 `fcm` gem 发送推送通知,它适用于 android 但不适用于 IOS的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何使用 fcm 以编程方式发送推送通知

使用 Parse Server 的 FCM 推送通知

node-fcm:为所有设备发送推送通知

来自通知中心的推送通知不起作用,但在 FCM 中它正在工作

向 FCM 服务器发送推送通知不起作用

有没有办法通过 FCM 发送免费的无限制推送通知?