我正在开发需要向IOS设备发送通知的后端。我已经在Firebase上正确配置了APN证书密码和所有内容,但有时通知会从简单的脚本发送到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中,它不会运行。在安卓系统上,它运行完美,没有任何问题。即使在简单的脚本上,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的应用程序编码来处理。我添加了badge, alert, sound
,这些是针对IOS的。
回答是为了解释Brad发布的评论。