我正在使用Firebase云消息传递并为我的通知创建一个cron,而不是使用Firebase控制台。我想知道我是否可以使用我用于Android的相同json。目前我的Android设备收到我发送的通知,但在我的iOS中它没有。我想知道它是否因为我在notification
对象中使用的一些参数(例如icon
)仅适用于Android平台,是否会影响结果?
我的帖子请求看起来像这样
{
"registration_ids" : $ids,
"notification" : {
"body" : "great match!",
"title" : "Portugal vs. Denmark"
"icon" : "myicon"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
更新
正如所建议的,我为我的iOS和Android创建了两个不同的cron,在我的iOS中我刚删除了json中的icon
参数。但我仍然无法收到任何通知。
同样在Capabilities Tab -> Push Notifications
下,我也在ON
切换Background Modes-> Remote notifications
。
答案 0 :(得分:2)
要使Firebase推送在iOS上运行,您必须将priority
设置为high
。参考:
Can't send push notifications using the server API
答案 1 :(得分:1)
你可以对android和ios使用相同的json。 Firebase Cloud Messaging将使用每个平台的相关参数
示例:
icon
将从定位iOS的邮件中删除,因为该平台不支持更改图标。
sound
应该是带扩展名的文件名(ios需要扩展名)。 Firebase会在定位Android设备时删除扩展程序。
关于未传递到iOS的邮件,请尝试增加priority
参数
https://firebase.google.com/docs/cloud-messaging/http-server-ref#downstream-http-messages-json
当ios应用程序处于后台时,Firebase使用APN来传递邮件,而APN通常会延迟不具有高优先级的邮件。
如果不起作用,请检查您的APNs证书配置。
答案 2 :(得分:0)
在我的json中,我添加了aps
对象
'aps' => array(
'alert' => $messageText,
'badge' => $badge,
'sound' => 'default',
'id' => $id
),