我遇到了有趣的意图工作流处理。我创建了一个通知,如下所示:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.abc_textfield_search_default_holo_dark).setContentTitle("Мероприятие изменилось")
.setContentText(eventToShow.valueAt(i).name + " " + eventToShow.valueAt(i).date).setAutoCancel(true);
Intent resultIntent = new Intent(context, MainActivity.class);
resultIntent.putExtra(MainActivity.NOTIFICATION_EVENT_DISPLAY, eventToShow.valueAt(i).id);
PendingIntent resultPendingIntent = PendingIntent.getActivity(context,0,resultIntent,PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotifyMgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotifyMgr.notify(eventToShow.valueAt(i).id, mBuilder.build());
当通知到达用户时,我希望当他点击它时 MainActivity.class将处理此意图。我在MainActivity.onCreate()
中处理有关意图的信息。
如果我点击应用程序外的通知,一切正常。活动正确地处理了这个意图并显示了我所期望的。
但是当我在我的应用程序中点击通知时,我的MainActivity.class
和onCreate()
没有触发。我以为它会被创建为MainActivity.class
的新实例
你能解释一下这是默认行为吗?我应该如何处理这种情况?
在测试我的应用程序后,我找到了下一个。
a)主要活动-
b) 主要活动-
所以我研究了一天来修复这个错误,这是我的发现。我肯定Android任务系统会让你头疼。看起来如果Android决定你从< code >非活动上下文调用你的意图,它可以用新的意图替换。
start从非活动上下文调用的活动;强制Intent.FLAG_ACTIVITY_NEW_TASK
这个意图
将替换您原来的意图
,并且您不会捕获您插入到其中的任何数据。
您可以采取下一步措施来防止这种情况。在您的活动中,您应该覆盖
下一种方法:
@Override
public void onNewIntent(Intent intent) {
int eventId = intent.getIntExtra(MainActivity.NOTIFICATION_EVENT_DISPLAY, -1);
}
现在你可以处理这些数据了
首先,这不是因为应用程序在后台。 通知随数据消息负载一起发送。在游戏控制台中,它表示消息已“确认”,因此它们正在到达设备。对于大多数用户,调用了onMessageReceived方法,但对于少数用户,它不是。为什么会这样? AndroidManifest: MyFirebaseMessagingService:
回调使用方式 登录控制台https://www.wenjiangs.com/doc/QSfBOXSPconsole/, 进入系统管理下的回调通知,点击添加。 直播回调说明 直播开始时回调 { "channel_id":"d5zjyp40", "call":"publish", "event":"publish" } 直播结束时回调 { "channel_id":"
当用户未连接到xmpp时,我正在使用FCM通知进行聊天。 FCM中有两种通知模式1。通知消息2。数据消息 如果我的应用程序最近被清除,我将不会使用数据消息作为通知消息 这种方法适用于除奥利奥以外的所有版本。 对于Oreo,我只有在应用程序未连接到xmpp且处于前台时才会收到通知。我的onMessageReception方法正在被调用。 但当该应用程序仅为奥利奥而被删除或从最近的应用程序中删除时,情
当应用程序被强制退出时,似乎不会调用函数。我的印象是,无论应用程序处于何种状态,都会调用该函数,但似乎只有在应用程序已经在后台运行时才会调用该函数。如果应用程序尚未使用新的iOS 7远程通知后台模式运行,是否有办法在后台唤醒该应用程序?
使用以下代码时: 以下用户行为创建了一种不一致的通知方法: null null
问题内容: 我正在使用FCM服务器进行远程通知,它可以完美地与发送和接收通知配合使用。 我的问题是,当设备在后台运行时,不会调用此函数。 我尝试过的解决方案: 该功能: 当用户点击通知时调用。否则,它不会被触发。 添加到有效载荷。另外,我尝试了这个值。 这是我的功能代码: func application(_ application: UIApplication, didReceiveRemote