当前位置: 首页 > 知识库问答 >
问题:

FCM推送通知在某些设备上不起作用

章阳波
2023-03-14

我们用FCM创建了一个带有通知的聊天应用程序,我的代码是正确的,我的设备也得到了推送通知数据,但一些中国制造的设备,如vivo、oppo、一加、小米,不允许通知显示,除非我在各自厂商的受保护的应用程序列表中添加应用程序。他们有没有办法解决这个问题。

https://hackernoon.com/notifications-in-android-are-horribly-broken-b8dbec63f48a

https://github.community/t5/project-development-help-and/firebase-push-notification-not-receiving-on-some-android-devices/td-p/5489

private NotificationManagerCompat notificationManager;

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);

    Log.d("test","call");

    notificationManager = NotificationManagerCompat.from(this);
    sendNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
}

private void sendNotification(String title, String msg) {
    Intent resultIntent = new Intent(this, ActivitySplashScreen.class);

    String channelId = getString(R.string.chc);
    String channelName = "Message Notification";

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addNextIntentWithParentStack(resultIntent);

    PendingIntent pendingIntent = stackBuilder.getPendingIntent(99, PendingIntent.FLAG_UPDATE_CURRENT);

    Notification notification = new NotificationCompat.Builder(this, channelId)
            .setSmallIcon(R.mipmap.ic_launcher_round)
            .setContentTitle(title)
            .setContentText(msg)
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setCategory(NotificationCompat.CATEGORY_MESSAGE)
            .setContentIntent(pendingIntent)
            .build();

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
        NotificationManager manager = getSystemService(NotificationManager.class);
        NotificationChannel channel = new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_HIGH);
        manager.createNotificationChannel(channel);
    }

    notificationManager.notify(10, notification);
}

共有1个答案

司空凌
2023-03-14

我不认为这有一个通用的解决方案,因为你的应用程序是基于google-FCM,这意味着android设备定期与谷歌互联网服务通信。

据我所知,google-FCM在中国被屏蔽了

 类似资料:
  • 我正在尝试用C#中的FCM在android设备上发送推送通知。Net,但我收到了“InvalidRegistration”错误消息。 我也用过邮递员和R-Client的方法,但仍然得到同样的错误。 {"multicast_id":8671409506357877791,"成功": 0,"失败": 1,"canonical_ids": 0,"结果":[{"错误":"无效注册"}]}

  • 问题内容: 我需要处理推送通知,这是通过较低版本的ios完成的,但是在ios 11中,从未收到任何推送通知。我使用Firebase Cloud Messaging。请任何人有解决方案,然后请分享。 问题答案: func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UI

  • Samsung正在成功获取应用程序在后台或前台被杀死, 我的目标是API27,这是我的代码 分级

  • 我无法在iOS设备上进行测试

  • 我在GitHub中使用这个项目:https://github.com/gankit0701/Face-Mask-Detection-In-android-App 这个使用TensorFlow Lite for mobile(Android)。它检测一个人是否戴面具。它在面部顶部绘制一个框(红色/绿色)。 我奇怪的问题是,如果我直接在设备上安装演示APK,面罩检测工作正常。但是当我在Android

  • 我们面临的问题是向所有android设备发送GCM推送通知。我们正在Ionic平台上开发一个应用程序,并使用名为cordova push的插件来推送通知。设备正在向gcm注册并接收设备令牌。我在用3台设备测试Moto g4 plus,MI4,乐视。 问题是,当应用程序被终止时,推送通知会到达moto g4 plus设备,但不会到达MI和Letv设备。MI和乐视设备也仅在应用程序处于前台或后台时接收