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>
答案 0 :(得分:1)
detailsPage
和priority
是顶级邮件属性。如果放在content_available
块内,FCM将无法识别它们。此外,data
仅在click_action
块中具有含义。有效消息看起来像这样,notification
或data
可选:
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"
}
}
属性放错了位置。默认情况下,仅数据消息以低优先级发送,不会唤醒休眠设备。