我正在构建一个 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')
最佳答案
有两种类型的 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了解更多详情。
关于android - firebase云消息没有看到小米设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57947042/