我已经创建了android应用程序来接收来自服务器的推送通知,但它无法正常工作。
当应用程序处于前台时,它可以完美运行。但是,当我们从系统托盘强制关闭应用程序时,它不起作用。
以下是我发给FCM的json代码。
{"to":"\/topics\/global","data":{"title":"Title","body":"Body"}}
下面是我的android功能
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设备的解决方案,使用以下步骤启用该应用程序的自动启动。
转到设置 - &gt;权限 - &gt;自动开启。从那里,选择您想要接收通知的应用,并切换开关以将其打开。
答案 0 :(得分:3)
根据doc,通知到达时有两种可能性。
您将在onMessageReceived
中收到通知,您可以使用此方法获取数据。您需要在系统托盘中生成本地通知。
处理通知
您已完成相关提及的此代码。
您会在系统托盘中收到通知。您无需在此处生成通知。您将在启动器活动的Intent中获取数据。
处理通知
以下是启动器活动的代码
@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
}
}
我做到了这一点,它对我有用。
答案 1 :(得分:0)