Android 当应用程序被终止时,某些手机上不会出现Firebase通知

Android 当应用程序被终止时,某些手机上不会出现Firebase通知,android,firebase,firebase-cloud-messaging,android-notifications,Android,Firebase,Firebase Cloud Messaging,Android Notifications,我正在尝试在我的Android应用程序中实现FCM。在一些手机上,当应用程序处于前台/后台/关闭状态时,会收到通知。但在某些手机上,只有当应用程序处于前台/后台时,才会收到该信息。当应用程序被终止时,onMessageReceived和启动器getExtra也不会被调用。我正在使用API中的数据和通知对象。 这是我的Android代码- @Override public void onMessageReceived(RemoteMessage remoteMessage) { Log.e("He

我正在尝试在我的Android应用程序中实现FCM。在一些手机上,当应用程序处于前台/后台/关闭状态时,会收到通知。但在某些手机上,只有当应用程序处于前台/后台时,才会收到该信息。当应用程序被终止时,onMessageReceived和启动器getExtra也不会被调用。我正在使用API中的数据和通知对象。 这是我的Android代码-

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.e("Here", "here");
if (remoteMessage.getData().size() > 0) {
  Log.e(TAG, "Data Payload: " + remoteMessage.getData().toString());
  try {
    JSONObject json = new JSONObject(remoteMessage.getData());
    sendPushNotification(json);
  } catch (Exception e) {
    Log.e(TAG, "Exception: " + e.getMessage());
  }
}
if (remoteMessage.getNotification() != null) {
  Log.e(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
}

我在通知方面遇到了相同的问题,经过研究,我们发现该问题是特定于设备的,不同的设备制造商不仅对通知有不同的处理,而且对其他服务(如VPN)也有不同的处理

  • 不幸的是,它是由设备制造商设计的
终止应用程序也将终止这些服务,您必须教育最终用户您的应用程序在设备列表上不起作用,因为三星设备总是会返回积极结果


干杯。

我也遇到过类似的问题。尽管有消息称这是firebase的问题,但更多的是关于不使用Android原生ROM的制造商

简单地说,像One Plus、MI、Oppo、Vivo等制造商使用定制ROM(重写股票Android的行为)。因此,当应用程序被用户终止时,其所有服务也将终止,因此没有通知。解决这个问题的一种方法是让用户更改他们的设置

原文可以找到

在清单文件中添加BootBroadcastReceiver


在自定义ROM设备中,当用户终止应用程序时,所有服务也将终止,因此不会发出通知

为了克服这个问题,我们必须使用数据通知

从服务器端发送数据通知,格式如下:

{
 "to" : "your_token",

 "time_to_live" :4500,
 "restricted_package_name":"your_package_name"
 
 
 "data" : {
     "body" : "Sending Notification Body From Data",
     "title": "Notification Title from Data",
     
     
     
 }
 "direct_boot_ok" : true,
 "priority" : "high"

}

我在MI、One Plus、OPPO等设备上测试了此解决方案,即使应用程序被关闭,也会收到通知/后台

在哪个手机上未收到通知,共享移动配置您可以参考此链接,这会对你有帮助@Raja我已经试过了,但是没有用。@BineshKumar我在运行安卓7.1.1的OnePlus 3T上没有收到通知。请看我的答案,一定有办法解决这个问题。因为即使在应用程序被终止时,同一设备也会从InShorts接收通知。您好,根据您的问题和描述,“在一些手机上,当应用程序处于前台/后台/终止状态时会接收通知。但在某些手机上,仅当应用程序处于前台/后台时才会接收通知。”这意味着特定设备会阻止推送通知,正如我在回答中所解释的。。。如果简而言之,您指的是在终止应用程序时或终止应用程序后几秒钟,这意味着接收通知的过程刚刚完成,那么终止应用程序并不意味着每个进程或服务都会立即关闭。如果你觉得我的答案有用,请投票支持,干杯。有一个叫做InShorts的应用程序。即使应用程序被终止,它也能够推送通知。是否有任何更新/解决方案?facebook和whatsapp是如何管理的?从Android API 26及以上版本开始,除非应用程序位于前台,否则无法启动服务。来源:有解决方案吗?@DKV目前没有解决方案。我一直在读这样的文章。我们只需要等待这些公司醒悟过来,开始负责任地发展。是的,这项工作一直持续到牛轧糖,他们在奥利奥的广播接收机方面的变化。您是否登记了1加3。在应用程序死机之后?
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class OnBootBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent i = new Intent("com.demo.FirebaseMessagingReceiveService");
        i.setClass(context, FirebaseMessagingReceiveService.class);
        context.startService(i);
    }
}
{
 "to" : "your_token",

 "time_to_live" :4500,
 "restricted_package_name":"your_package_name"
 
 
 "data" : {
     "body" : "Sending Notification Body From Data",
     "title": "Notification Title from Data",
     
     
     
 }
 "direct_boot_ok" : true,
 "priority" : "high"

}