我正在开发后端,需要将通知发送到 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/