确定是不是从 FCM 通知调用活动

Posted

技术标签:

【中文标题】确定是不是从 FCM 通知调用活动【英文标题】:Determine if activity is called from FCM notification or not确定是否从 FCM 通知调用活动 【发布时间】:2018-07-31 21:46:08 【问题描述】:

我正在为我的应用使用 FCM 通知。通知没有数据。因此,只要应用程序在后台,主活动就会在通知上打开。我的主要活动有 4 个选项卡。如果应用程序是从通知中打开的,我想打开 Tab4,否则是 Tab 2。

我想检查主要活动是否从通知中打开。因为我的通知没有数据。我不会在 Intent extras 中得到任何东西。

【问题讨论】:

【参考方案1】:

intent 上添加Extra 以识别Activity 启动的来源

从通知调用时这样做

Intent notificationsIntent = new Intent(NotificationsActivity.this, MainActivity.class);
notificationsIntent.putExtra("Source", "Notification");
startActivity(notificationsIntent);

在你的MainAcitivity 中点赞

if(getIntent().getStringExtra("Source") == "Notification") 
    //set current tab to 4
 else 
    //set current tab to 2

【讨论】:

【参考方案2】:

当应用通过通知消息(不是数据消息)打开时,intent 将包含一个source 值,您可以检查该值以检测是否使用通知打开了活动。

 if (intent.hasExtra("source")) 
     // set tab to 4
 

【讨论】:

以上是关于确定是不是从 FCM 通知调用活动的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法从flutter App内部发送FCM通知?

使用 Java,而不是 FCM 控制台发送 Firebase 通知

在后台模式下不调用 FCM 通知方法

不使用 FCM 通知服务器调用 didReceiveRemoteNotification 函数

如何知道来自 FCM 的通知是不是没有到达目标设备?

如何使用消息 ID 跟踪 FCM 推送通知是不是已交付