我正在构建一个React Native应用。我想从Firebase发送云消息,但不能。我准备了项目并安装在我的设备上。其中之一是三星,另一人是小米。当我发送通知时,可以在三星上看到,但在小米上看不到。我也可以使用fcmToken发送通知我的虚拟android设备。您要如何解决该问题?
firebase云消息控制台:https://pasteboard.co/IxyD0p3.png
System:
OS: Windows 10
CPU: (12) x64 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
Memory: 1.46 GB / 7.89 GB
Binaries:
Node: 10.15.3 - C:\Program Files\nodejs\node.EXE
npm: 6.4.1 - C:\Program Files\nodejs\npm.CMD
IDEs:
Android Studio: Version 3.3.0.0 AI-182.5107.16.33.5314842
react-native-cli: 2.0.1
react-native: 0.60.5
app/build gradle dependencies
implementation "com.google.android.gms:play-services-base:16.0.0"
implementation 'com.google.android.gms:play-services-gcm:16.0.0'
implementation "com.google.firebase:firebase-core:16.0.9"
implementation "com.google.firebase:firebase-messaging:19.0.0"
implementation 'com.google.firebase:firebase-analytics:17.2.0'
implementation 'me.leolin:ShortcutBadger:1.1.21@aar'
/build gradle
classpath("com.android.tools.build:gradle:3.4.1")
classpath('com.google.gms:google-services:4.3.2')
答案 0 :(得分:1)
FCM通知有两种类型:通知消息和数据消息。
通知消息如下:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
}
}
}
并触发FirebaseMessagingService的方法OnMessageReceaved()。 许多设备(尤其是华为和小米)都竭尽全力杀死后台服务,以防止电池耗尽。因此,FirebaseMessagingService并不是处理通知的最佳方法。
第二种类型是
数据消息:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}
}
}
此类型由系统托盘处理,因此您无需运行任何服务即可获取通知。它更方便的方法,但据我所知,它不能通过控制台实现。
您可能需要服务器API来发送数据消息。
阅读this了解更多详细信息。