我正在使用 `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的主要内容,如果未能解决你的问题,请参考以下文章