我在接收Firebase推送消息到运行Wear OS的手表时遇到问题。当手表通过蓝牙(无Wi-fi连接(与智能手机配对时,就会发生这种情况。如果手表上的Wi-fi处于活动状态,那么信息传递也很好。
我正在使用FCM端点通过POST请求发送数据消息:https://fcm.googleapis.com/fcm/send
消息有效载荷本身看起来是这样的:
{
"priority" : "high",
"to" : "/topics/myTopic",
"data" : {
"key1" : "val1",
"key2" : "val2"
"key3" : "val3"
}
}
我像往常一样注册了服务:
<service android:name=".data.fcm.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
像往常一样倾听信息:
override fun onMessageReceived(remoteMessage: RemoteMessage?) {
// Check whether message contains a data payload.
if (remoteMessage?.data!!.isNotEmpty()) {
Timber.d("Message data payload: ${remoteMessage.data}")
....
}
}
}
我应该注意的是,Firebase数据库在手表上运行得很好,它只通过蓝牙连接到手机。但FCM没有。
任何想法都将不胜感激。
这可能是由于FCM在配对手机上使用的端口被阻塞所致。如果手机是通过Wifi连接的,并且FCM端口(5228、5229、5230(在那里被屏蔽,消息将无法传递。https://firebase.google.com/docs/cloud-messaging/concept-options#ports_and_your_firewall