Firebase FCM发送通知OnMessageReceived PendingIntent显示当前活动

问题描述 投票:0回答:1

我有一个包含多项活动的应用程序。我正在努力使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正常运行,除了在处理用户单击通知图标时应进行的活动之外,其他所有功能都运行良好...

android firebase-notifications
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.