ruby-on-rails - 我正在使用 `fcm` gem 发送推送通知,它适用于 Android,但不适用于 IOS

标签 ruby-on-rails firebase firebase-cloud-messaging apple-push-notifications

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

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

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 的工作示例,请告诉我。

最佳答案

我必须在 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 的应用程序编码来处理。我添加了徽章、警报、声音,这些是针对 IOS 的。

给出答案是为了解释@Brad 发布的评论。

关于ruby-on-rails - 我正在使用 `fcm` gem 发送推送通知,它适用于 Android,但不适用于 IOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58577464/

相关文章:

java - 无法在 Android Studio 上构建应用程序,谷歌服务冲突

mysql - 如何有效地连接具有相同 ID 的多个表?

java - 使用 Android/Java 从嵌套对象 Firebase 检索数据?

ruby-on-rails - 使 Rails 生成单引号字符串而不是双引号字符串以满足 RuboCop

java - 找不到 FireBase 错误 : cannot access zzanb class file for com. google.android.gms.internal.zzanb

android - 通过向查询添加监听器返回的 DataSnapshot 是否不同于直接添加到 DatabaseReference 的 DataSnapshot

android - 从 FCM 通知访问、打开或编辑 Web View

java - 获取接收者的设备 token 以在 Firebase 中发送通知

ruby-on-rails - 如何在不创建空模型的情况下创建 rails_admin 导航标签?

javascript - rails 中的 Ladda 加载按钮