Android:8.1.0 设备:Infinix X604B
问题: 在Firebase控制台中使用“ Notification Composer”将通知发送到我的签名发布应用。 当我的应用程序位于前台/后台时,一切正常。当我通过从打开的应用列表中换出来关闭应用时,不会收到发送的通知。
我在 logcat 中得到关注:
2019-01-18 12:22:21.758 2015-11920 /? I / ActivityManager:杀死 15197:com.tsp.fcm / u0a148(adj 900):删除任务
2019-2108 / 2019-01-18 12:22:21.831 W / InputDispatcher:频道 '92faa4f com.tsp.fcm / com.tsp.fcm.MainActivity(服务器)'〜使用者 输入通道关闭或发生错误。事件= 0x9
2019-2108 / 2019-01-18 12:22:21.831 E / InputDispatcher:通道 '92faa4f com.tsp.fcm / com.tsp.fcm.MainActivity(服务器)'〜频道为 不可恢复的破碎,将被处置!
2019-01-18 12:22:21.831 2015-2151 /? I / WindowManager:WIN DEATH: 窗口{92faa4f u0 com.tsp.fcm / com.tsp.fcm.MainActivity} 2019-01-18 2015-2151 12:22:21.832 /? W / InputDispatcher:尝试注销 已经未注册的输入通道'92faa4f com.tsp.fcm / com.tsp.fcm.MainActivity(服务器)'
2019-3498 / 2019-01-18 12:22:21.837 V / ActivityManager:死亡过程: com.tsp.fcm,pid:15197不允许重新启动。
2019-01-18 12:22:37.405 2015-2030 /? D / ProcessManager.AS:***跳过 {com.tsp.fcm}接收广播。
2019-01-18 12:22:37.406 2015-2030 /? D / BroadcastQueue:***无法启动 应用com.tsp.fcm / 10148用于广播Intent { act = com.google.android.c2dm.intent.RECEIVE flg = 0x11000010 pkg = com.tsp.fcm(有其他功能)}来自 com.google.android.gms / 10020。(仅限自动启动)
2019-01-18 12:22:37.413 2727-2727 /? W / GCM:广播意图回调: result = CANCELLED forIntent { act = com.google.android.c2dm.intent.RECEIVE flg = 0x10000000 pkg = com.tsp.fcm(有其他功能)}
答案 0 :(得分:0)
Android 8.0引入了通知通道,可让您为要显示的每种通知类型创建用户可自定义的通道。
我们可以通过为每个通知创建通道来区分通知的行为。如果没有为通知指定通道,则该通知将不会出现在状态栏中。
在使用Android Oreo之前,我们要创建通知时必须执行以下操作:
/**Creates an explicit intent for an Activity in your app**/
Intent resultIntent = new Intent(mContext , SomeOtherActivity.class);
resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent resultPendingIntent = PendingIntent.getActivity(mContext,
0 /* Request code */, resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder = new NotificationCompat.Builder(mContext);
mBuilder.setSmallIcon(R.mipmap.ic_launcher);
mBuilder.setContentTitle(title)
.setContentText(message)
.setAutoCancel(false)
.setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
.setContentIntent(resultPendingIntent);
mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
assert mNotificationManager != null;
mNotificationManager.notify(0 /* Request Code */, mBuilder.build());
现在使用Android Oreo,要显示一条通知,我们将必须执行以下操作(如果添加,请选中):
/**Creates an explicit intent for an Activity in your app**/
Intent resultIntent = new Intent(mContext , SomeOtherActivity.class);
resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent resultPendingIntent = PendingIntent.getActivity(mContext,
0 /* Request code */, resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder = new NotificationCompat.Builder(mContext);
mBuilder.setSmallIcon(R.mipmap.ic_launcher);
mBuilder.setContentTitle(title)
.setContentText(message)
.setAutoCancel(false)
.setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
.setContentIntent(resultPendingIntent);
mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
{
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
notificationChannel.enableLights(true);
notificationChannel.setLightColor(Color.RED);
notificationChannel.enableVibration(true);
notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
assert mNotificationManager != null;
mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
mNotificationManager.createNotificationChannel(notificationChannel);
}
assert mNotificationManager != null;
mNotificationManager.notify(0 /* Request Code */, mBuilder.build());