我已经实施了Firebase,但不幸的是,通知仅在app位于Foreground或Background时才有效,但在应用关闭时无法收到任何通知。我尝试在网上冲浪,但无法获得任何结果。 有没有办法让应用程序在关闭后保持活动状态? 如果是,我认为这将有助于接收通知。任何有用的建议都是受理的。感谢
答案 0 :(得分:0)
我做的一件事是我不依赖于通知响应,我宁愿传递数据对象并自己制作自定义通知。
以下是可以帮助您的代码,因为即使应用程序处于打开状态和关闭状态,我们也可以访问数据对象:
Map<String, String> dataMap = remoteMessage.getData();
String notif = dataMap.get("title");
然后我使用此功能发出通知
private void notificationManager(Context context, String message) {
try {
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Log.v("message", "," + message);
Intent notificationIntent = new Intent(context, SplashActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
builder.setContentTitle(context.getString(R.string.app_name));
builder.setStyle(new NotificationCompat.BigTextStyle().bigText(message));
builder.setContentText(message);
builder.setTicker(message);
builder.setLights(Color.GREEN, 500, 500);
builder.setWhen(when);
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentIntent(intent);
Notification notification = builder.build();
notification.ledARGB = 0xFFff0000;
notification.flags = Notification.FLAG_SHOW_LIGHTS;
notification.ledOnMS = 100;
notification.ledOffMS = 100;
notificationManager.notify(1, notification);
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
wl.acquire(15000);
} catch (Exception e) {
e.printStackTrace();
}
}
希望这有帮助。
答案 1 :(得分:0)
FCM有两种消息传递服务
可能您正在使用显示消息。您应该使用数据消息而不是显示消息。应用关闭时,显示消息功能无法正常工作。