我在将Firebase推送消息接收到操作Wear OS的手表时遇到问题。当手表通过蓝牙与智能手机配对时(没有Wi-Fi连接),就会发生这种情况。如果手表上启用了Wi-fi,则可以正常发送消息。
我正在使用FCM端点通过https://fcm.googleapis.com/fcm/send
通过POST请求发送数据消息消息有效负载本身看起来像这样:
{
"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 Database在手表上运行良好,该手表仅通过蓝牙连接到手机。但是FCM不会。
任何想法都会受到赞赏。
答案 0 :(得分:1)
可能是由于配对电话上FCM使用的端口被阻塞。 如果电话通过Wifi连接,并且FCM端口(5228、5229、5230)在那里被阻止,则消息将不会传递。 https://firebase.google.com/docs/cloud-messaging/concept-options#ports_and_your_firewall