如何使用php FCM同时处理向Android和iOS发送的不同通知负载?
我使用FCM通过我的php服务器发送Android和iOS应用程序的通知。只是因为不同平台需要不同的负载,现在我面临一个大问题 现在我的有效负载结构如下所示如何使用php FCM同时处理向Android和iOS发送的不同通知负载?,php,android,ios,firebase,firebase-cloud-messaging,Php,Android,Ios,Firebase,Firebase Cloud Messaging,我使用FCM通过我的php服务器发送Android和iOS应用程序的通知。只是因为不同平台需要不同的负载,现在我面临一个大问题 现在我的有效负载结构如下所示 "registration_id":[all my firebase token here] //***here just for iOS "notification":{ "title":"Match update", "body":"Arsenal goal in added time, score is now 3
"registration_id":[all my firebase token here]
//***here just for iOS
"notification":{
"title":"Match update",
"body":"Arsenal goal in added time, score is now 3-0"
"sound" : "default"
"priority" : 'high'
"content_available" = true
}
//***here I need this for Android
"data":{
"title":"Match update",
"body":"Arsenal goal in added time, score is now 3-0"
"id": "my_id"
//other data I need in android
}
因此,通过发送有效负载,我实际上可以同时在iOS和Android中收到通知。这很好,但是
真正的问题从这里开始。
在android中,我没有应用程序扫描通知
字段,我想在通知到达android设备时从“数据”字段开始处理我的应用程序。虽然我没有在“通知”中获取数据,但应用程序似乎会自动为我处理“通知”数据
但是,如果我没有在上面的有效负载中包含“通知”字段,Android部分将按照我想要的方式运行,但是在iOS中,我根本无法获得通知
在查看了本文中提到的平台覆盖后,我修改了我的有效载荷,如下所示:
"registration_id":[all my firebase token here]
"android":{
"data":{
"title":"Match update",
"body":"Arsenal goal in added time, score is now 3-0"
}
}
"apns":{
"payload":{
"aps":{
"alert":{
"title":"Hello",
"body":"Please confirm your availability"
}
"sound" : "default"
"priority" : 'high'
"content_available" = true
}
}
但是有了上面的有效负载结构,我的Android和iOS都无法收到任何通知
注意:我的Android和iOS应用程序都可以从Firebase控制台获得通知
所以我的问题是:如何将不同结构的有效载荷发送到不同的平台来解决这种困境
该页面中的示例消息如下所示:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Match update",
"body":"Arsenal goal in added time, score is now 3-0"
},
"android":{
"ttl":"86400s",
"notification"{
"click_action":"OPEN_ACTIVITY_1"
}
},
"apns": {
"headers": {
"apns-priority": "5",
},
"payload": {
"aps": {
"category": "NEW_MESSAGE_CATEGORY"
}
}
},
"webpush":{
"headers":{
"TTL":"86400"
}
}
}
}
您的JSON似乎根本不是这样构造的。尝试复制示例结构并从那里开始工作,注意不同元素的嵌套。打两个电话?@YvesLeBorg我不能,因为所有ios和android fcm令牌都在同一个数组中
注册id
不是fcm v1的密钥。目前,您可以使用令牌
键发送到单个设备,使用主题
键发送到主题,或使用条件
发送到主题条件。有关更多信息和完整的令牌列表,请参阅。因此,在本例中,我需要一个for循环来为数组中的所有令牌调用firebase API 1乘1??这是一个选项。也可以使用主题。或者您可以使用批处理请求,它使用类似于的表示法。我们正在努力将批处理符号合并到FCM文档中。是否可以对android和ios使用两种不同的标题
和正文
?