我有一个包含多项活动的应用程序。我正在努力使Firecbase FCM正常运行,除了在处理用户单击收到通知图标时应进行的活动之外,其他所有功能都运行良好。
由于我不确定FirebaseMessagingService的实例化方式/何时实例化,因此无法通过访问任何对象来对其进行设置。我唯一能做的就是将当前活动存储在[]中
public static Activity CurrentActivity { get; set; }
然后在每个活动的OnCreate()中设置以上内容,然后在FirebaseMessagingService .OnMessageReceived()中,按如下所示设置我的待处理的意图:
Intent intent = new Intent(this, App.CurrentActivity.GetType()); intent.AddFlags(ActivityFlags.SingleTop); var pendingIntent = PendingIntent.GetActivity(this, App.NOTIFICATION_ID, intent, PendingIntentFlags.OneShot); var notificationBuilder = new NotificationCompat.Builder(this, App.CHANNEL_ID) .SetSmallIcon(Resource.Drawable.ic_notification) .SetContentTitle("FCM Message") .SetContentText("test") .SetAutoCancel(true) //dismisses the notification on click .SetContentIntent(pendingIntent); var notificationManager = NotificationManagerCompat.From(this); notificationManager.Notify(App.NOTIFICATION_ID, notificationBuilder.Build());
到目前为止,该方法一直有效,因此,当用户单击通知时,它将转到正确的活动。
问题是,当用户处于活动A中但没有单击该通知时,该通知被取消了,而是移至活动B,然后单击该通知。我的待定意图将是活动A。但是,在显示通知后,便会显示活动A。
我在想,是否有可能在OnMessageReceived()中检测到应用程序是在前台还是在后台,如果在前台,我可以这样做并打算显示消息的警报对话框,如果在后台,则我的原始代码会工作正常。
有人知道这是否可行以及如何实现?
我有一个包含多项活动的应用程序。我正在努力使Firecbase FCM正常运行,除了在处理用户单击通知图标时应进行的活动之外,其他所有功能都运行良好...