我有一个设置为接收FCM主题消息的Android和iOS应用程序。
在启动时,我订阅了一个名为top_stories的主题。 一个人取消订阅的唯一时间是他们切换应用程序中的设置以接收通知。
我们通过自己的服务器使用FCM API发送推送消息,并且有效负载包含通知和数据主体有效负载。
我们最近开始发送主题并注意到一些问题。在90%的情况下,我们所有的办公室测试设备都接受了推送。然而,一些iOS设备和一些Android设备有不同的体验。
其中两个iOS设备未收到第一条和第二条消息,但确实收到了第三条消息。
类似的事情发生在一个Android设备上,它接收到第一条消息,没有收到第二条消息,并且确实收到了第三条消息。
我能做些什么来改善/解决这种情况吗?
我可以根据需要提供有关示例消息等的更多详细信息。
我知道onMessageReceived在所有情况下都可以正常运行,因为它在我们的内部测试中有效。
我们正在使用以下库来构建消息:
https://github.com/sngrl/php-firebase-cloud-messaging
这是构建消息的代码:
object(sngrl\PhpFirebaseCloudMessaging\Message)[505]
private 'notification' =>
object(sngrl\PhpFirebaseCloudMessaging\Notification)[503]
private 'title' => string 'App Name' (length=14)
private 'body' => string 'Upgrade testing - activation' (length=36)
private 'badge' => null
private 'icon' => null
private 'sound' => string 'default' (length=7)
private 'clickAction' => null
private 'tag' => null
private 'content_available' => boolean true
private 'notification' (sngrl\PhpFirebaseCloudMessaging\Message) => null
private 'collapseKey' (sngrl\PhpFirebaseCloudMessaging\Message) => null
private 'priority' (sngrl\PhpFirebaseCloudMessaging\Message) => null
private 'data' (sngrl\PhpFirebaseCloudMessaging\Message) => null
private 'recipients' (sngrl\PhpFirebaseCloudMessaging\Message) =>
array (size=0)
empty
private 'recipientType' (sngrl\PhpFirebaseCloudMessaging\Message) => null
private 'jsonData' (sngrl\PhpFirebaseCloudMessaging\Message) =>
array (size=0)
empty
private 'collapseKey' => null
private 'priority' => string 'high' (length=4)
private 'data' =>
array (size=7)
'v' => int 1484232738
'timestamp' => int 1484232738
'pushId' => string '58779822a1fef' (length=22)
'content_available' => boolean true
'title' => string 'Upgrade testing - activation' (length=36)
'articleId' => int 250324509
'category' => string 'news/' (length=5)
private 'recipients' =>
array (size=1)
0 =>
object(sngrl\PhpFirebaseCloudMessaging\Recipient\Topic)[504]
private 'name' => string 'top_stories_test' (length=16)
private 'to' (sngrl\PhpFirebaseCloudMessaging\Recipient\Recipient) => null
private 'recipientType' => string 'sngrl\PhpFirebaseCloudMessaging\Recipient\Topic' (length=47)
private 'jsonData' =>
array (size=0)
empty
{
"to" : "/topics/top_stories",
"priority" : "high",
"notification" : {
"body" : "Article Title",
"title" : "Publication Name",
"sound" : "default"
},
"data" : {
"title" : "Article Title",
"v" : "1484232738",
"timestamp" : "1484232738",
"pushId" : "fireabse-58779822a1fef",
"content_available" : true,
"title" : "Article Title",
"articleId" : "12345",
"category" : "news/"
}
}
compile "com.google.firebase:firebase-messaging:10.0.1"
<service
android:name="ie.company.services.MyInstanceIDListenerService"
tools:ignore="ExportedService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service
android:name="ie.company.services.MyFcmListenerService"
tools:ignore="ExportedService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>