我正在搜索应用程序运行时,后台或已杀死时处理fcm通知的模式。
我们的应用程序具有登录过程,因此当应用程序未启动时,通知需要打开启动器,但是当应用程序运行时,我想在用户单击通知时推送活动。
所以我认为最好的方法是将ContentIntent传递到Stack中最顶层的Activity或者传递给Launch-Activity。
我的当前代码总是使用TaskStackBuilder重新启动应用程序,无论应用程序是否正在运行。
我的代码示例:
resultIntent = new Intent(this, MyProfileActivity.class);
resultIntent.putExtra(ActivityUtil.KEY_IMAGE_URL, SharedPref.getUserImage(this));
resultIntent.putExtra(KEY_NOTIFICATION_ID, notificationID);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(SetDetailReworked.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "...")
.setLargeIcon(getBitmapFromUrl(images[UI.GetDensityInt(this)]))
.setSmallIcon(R.drawable.bar_icon)
.setContentTitle(getString(R.string.push_notification_Title))
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(resultPendingIntent);
Notification not = builder.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(ID, not);
答案 0 :(得分:0)
尝试在androidManifest中将MyProfileActivity的launchMode设置为singleInstance,
<activity
android:name=".MyProfileActivity"
android:label="@string/app_name"
android:launchMode="singleInstance"
当用户点击通知时,它不会重新启动您的后台活动。相反,将触发MyProfileActivity的onNewIntent。