为什么有些iOS& Android设备间歇性地接收FCM主题消息?

时间:2017-01-12 15:58:30

标签: android ios firebase firebase-cloud-messaging firebase-notifications

我有一个设置为接收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>

0 个答案:

没有答案