FCM“数据”有效负载未在一个应用中收到但在另一个应用中

时间:2018-05-11 17:24:41

标签: android firebase firebase-cloud-messaging

tl; dr - onMessageReceived未在一个应用中调用,但在同一个Firebase项目中的另一个应用中调用。消息发送成功,但设备从未收到(“数据”对象)。这两个应用程序都扩展了相同的基础服务。

嘿伙计们,

我无法让我的SDK Sample应用程序与我的主应用程序一样使用FCM。

即,我得到了一个成功的帖子回复,但是如果它是数据通知,设备上会发生什么都没有,但是通知通知似乎已经通过 - 这意味着它不是很大的

{
"multicast_id": 5418976075057112952,
"success": 1,
"failure": 0,
"canonical_ids": 0,
"results": [
    {
        "message_id": "0:1526059128643443%14258072f9fd7ecd"
    }
]}

为了集成,我基本上只是将我的示例应用程序添加到我们在控制台上用于iOS / Android主要应用程序的Firebase应用程序,当我使用控制台进行测试时,一切都很“好”,即“通知”通知工作。 google-services.json中的所有值看起来都是正确的。

我的主应用程序和示例应用程序都扩展了我的库中的firebase InstanceID / Messagaging对象(这可能有问题吗?我怀疑没有)。

我在这里错过了一些特定于我的情景的内容吗?就配置而言,它与教程几乎完全相同。当您尝试将两个Android应用程序添加到同一个firebase项目时,是否有人意识到问题?

我也有机会等待一段时间让谷歌刷新,但我今天大部分都是这样,就像我说的那样,FCM控制台/'通知'通知工作

我担心可能会有一些我失踪的低级别。请给我一些帮助!

谢谢你们!

我正在发送的内容(这可以按预期在主应用上运行):

{
"registration_ids": [<DEVICE>],
"data": 
    {"field1": "data1", ... },
 "content_available": true,
 "priority": "high"
}

(样板文件)消息服务代码

public class AppFirebaseMessagingService extends BaseFirebaseMessagingService {
   private static final String TAG = "AppFirebaseMessaging";
   public AppFirebaseMessagingService() {
       super();
   }

   @Override
   public void onMessageReceived(RemoteMessage remoteMessage) {
       //this isn't called in SAMPLE
   }
}

清单声明:

<service android:name=".firebase.AppFirebaseMessagingService"
   android:enabled="true"
   android: permission = "android.permission.INTERNET" >
   <intent-filter>
   <action android:name = "com.google.firebase.MESSAGING_EVENT" / >
   </intent-filter> 
</service> 
<service android:name=".firebase.AppFirebaseInstanceIDService"
   android:enabled="true"
   android:permission="android.permission.INTERNET" >
   <intent-filter>
       <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
   </intent-filter>
</service>

1 个答案:

答案 0 :(得分:1)

detailsPagepriority是顶级邮件属性。如果放在content_available块内,FCM将无法识别它们。此外,data仅在click_action块中具有含义。有效消息看起来像这样,notificationdata可选:

notification

请参阅Legacy FCM Server Protocol文档以供参考。

您可能无法立即在某些设备上看到仅限数据的消息,因为您的{ "registration_ids": [<DEVICE>], "content_available": true, "priority": "high", "data": { "data_key_1": "some value", "data_Key_2": "another value" }, "notification": { "title": "New Message", "body": "Hey there" "click_action": "ACTION_X_Y_Z_A_B_C_ETC" } } 属性放错了位置。默认情况下,仅数据消息以低优先级发送,不会唤醒休眠设备。