android - 在某些设备(例如小米 oppo、vivo、Redmi 和某些操作系统(Oxygen OS、Color OS、MIUI 等)中关闭应用程序时,FCM 推送通知不起作用)
问题描述
在某些设备(如小米、OPPO、vivo、Redmi 和某些操作系统(Oxygen OS、Color OS、MIUI 等)中关闭应用程序时,FCM 推送通知不起作用。
但其他设备和操作系统运行良好。
有没有人有这方面的经验?
安卓端代码。
公共类 MyFirebaseMessagingService 扩展 FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
/**
* Called when message is received.
*
* @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
*/
// [START receive_message]
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.e(TAG, "From: " + remoteMessage.getFrom());
}
}
公共类 MyFirebaseInstanceIDService 扩展 FirebaseInstanceIdService {
private static final String TAG = MyFirebaseInstanceIDService.class.getName();
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
// If you want to send messages to this application instance or
// manage this apps subscriptions on the server side, send the
// Instance ID token to your app server.
sendRegistrationToServer(refreshedToken);
}
private void sendRegistrationToServer(String refreshedToken) {
}
}
<service
android:name=".MyFirebaseInstanceIDService"
android:stopWithTask="false"
>
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<service
android:name=".MyFirebaseMessagingService"
android:stopWithTask="false"
>
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
服务器端代码
{
"notification": {
"title": "FCM Kazi",
"body": "FCM bdoy1 ",
"sound": "default",
"click_action": "FCM_PLUGIN_ACTIVITY",
"icon": "fcm_push_icon"
},
"data": {
"param1": "value1",
"param2": "value2"
},
"to": "cVL4I6upF-g:APA91bE7EFv3apIMHuEL_oCoVvhhrUw-ftM6S11RE9HOF58wf3ewYkDUh9wUhUCMIa6zoftOgGH5HWt0rPKVHw2OShn06tIESFnGo9u8rooJ9qfiXQQlg-zZzjgi0cQ64BUaZnUCM09R",
"priority": "high"
}
解决方案
仅使用数据播放负载并删除通知播放负载。无论应用程序是打开还是关闭,数据播放负载总是会收到。通知播放负载仅在应用程序处于前台时才有效。如果您在少数设备上没有收到,请转到设备设置并启用该应用的接收通知。默认情况下,很少有制造商不允许通知。
推荐阅读
- php - 获取从 A 点到 B 点的 CPU 指令数 A 脚本编译成 PHP
- flask - 烧瓶渲染模板返回没有错误的空白页
- node.js - 找不到模块 node.js
- python - 大型 CSV 文件,只有一列用作使用多处理的函数的参数
- maps - 如何从 Here Maps API 检索地点图像?
- c# - 动态创建的按钮的单击事件未触发
- r - 如何从 Linux 6.5 卸载 Vertica-R-lang-version.rpm 和其他 R 语言发行版?
- javascript - TR表中的jQuery清理文本
- ios - CKQuerySubscription:订阅失败
- javascript - XMLHttpRequest failing on new server