我正在开发需要将通知发送到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上却没有。在Android上,它运行正常,没有任何问题。即使在几个小时后的简单脚本IOS上,也停止使用简单的ruby脚本工作。
如果您有任何红宝石在轨道上的工作样品,请告诉我。
答案 0 :(得分:0)
我必须在FCM for 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发表的评论。