Android Firebase 推送通知在应用程序被终止时不起作用



我已经创建了Android应用程序来接收来自服务器的推送通知,但它不起作用。

当应用程序处于前台时,它可以完美运行。但是当我们强制从系统托盘关闭应用程序时,它不起作用。

以下是我发送给FCM的json代码。

{"to":"/topics/global","data":{"title":"Title","body":"Body"}}

下面是我的安卓功能

public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.d("Msg", "Message received ["+remoteMessage+"]");
Map<String, String> data = remoteMessage.getData();

DatabaseHandler db = new DatabaseHandler(getApplicationContext());
db.addData(data.get("body"));
Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class);
resultIntent.putExtra("message", data.get("body"));
showNotificationMessage(getApplicationContext(), data.get("title"), data.get("body"), "", resultIntent);
}

下面是显示通知的代码。

private void showNotificationMessage(Context context, String title, String message, String timeStamp, Intent intent) {
notificationUtils = new NotificationUtils(context);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
notificationUtils.showNotificationMessage(title, message, timeStamp, intent);
}

我找不到任何问题,任何人都可以帮我。

提前非常感谢你。

编辑:

我已经通过更换手机解决了我的问题,三星设备代码工作正常,但它与 MI 设备本身有关。

我也有MI设备的解决方案,请使用以下步骤启用自动启动该应用程序。

转到设置 -->权限 -->自动启动。从那里,选择要接收通知的应用程序,然后切换开关将其打开。

根据文档,通知到达时有两种可能性。

  1. 应用程序位于前台。

您将在onMessageReceived中收到通知,并且可以通过此方法获取数据。您需要在系统托盘中生成本地通知。

处理通知

您已经按照相关内容完成了此代码。

  1. 应用程序在后台。

您会在系统托盘中收到通知。您无需在此处生成通知。您将在启动器活动的意图中获取数据。

处理通知

这是启动器活动的代码

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
if (intent == null || intent.getExtras() == null) {
// your code to handle if there is no notification
} else {
// handle notification
String body = intent.getStringExtra("body");
String title = intent.getStringExtra("title");
//TODO your code to open activity as per notification
}
}

我已经这样做了,它对我有用。

从这里,

在后台时,应用会在通知

托盘中接收通知有效负载,并且仅在用户点击通知时处理数据有效负载。

由此,

这包括同时包含通知和数据负载的消息(以及从通知控制台发送的所有消息(。在这些情况下,通知将传递到设备的系统托盘,并且数据有效负载将在启动器活动的意图的附加内容中传递

您可能会从接收消息教程中获得完整的帮助

相关内容

  • 没有找到相关文章