单击 fcm 通知而不是打开启动器活动时打开浏览器

Posted

技术标签:

【中文标题】单击 fcm 通知而不是打开启动器活动时打开浏览器【英文标题】:Open browser when clicked on fcm notification instead of opening launcher activity 【发布时间】:2020-05-05 04:00:27 【问题描述】:

我想将带有 FCM 的 url 发送到 android 应用程序。单击 FCM 通知而不是打开启动器活动时是否可以打开浏览器?我知道可以覆盖onMessageReceived() 方法,但我不想这样做。我检查了有效载荷中的click_action 参数,但正如 Firebase 所说:

如果指定,则启动具有匹配意图过滤器的活动 当用户点击通知时。

我正在尝试在 firebase cloudMessaging 面板中的 CustomData 中添加 click_action,如下所示:

但它不起作用并打开应用程序。

我使用邮递员为此目的发送通知并将click_action 添加到notification 对象,如下所示:

通知发送到我的设备,但是当点击它时,什么也没发生!!!

重要提示:我的 apk 在 GooglePlay 上发布,我无法更改应用程序的源代码。

任何人都帮助。

【问题讨论】:

您是否尝试过通知待处理意图 @Lenoarod No. Apk 在 googlePlay 上发布,我无法更改源代码。 我不认为它必须首先从代码中得到支持。你不能发送东西并相信它会打开浏览器。必须设置待处理意图的意图过滤器。 @FrankvanPuffelen 你能帮帮我吗? 【参考方案1】:

当您的应用在后台时。通知被传送到设备的系统托盘。默认情况下,用户点击通知会打开应用启动器。

如果消息有数据,则通知会传递到设备的系统托盘,数据负载会在启动器 Activity 的 Intent 中传递。

所以你可以根据不同的数据,来处理条件。

    在通知负载中设置 click_action

  ...
  "notification": 
      "click_action": "activity action"
  ,
 ....

2.在mainfest中你必须配置inter fliter。

<intent-filter>
  <action android:name="some action" />
  <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

然后,当您单击它时,它将打开该操作活动。 这是文档描述:

如果指定,则在用户单击通知时启动具有匹配意图过滤器的活动。

所以我认为您尝试设置 click_action 动作以匹配浏览器选择器动作,或“Intent.ACTION_VIEW”和类似“http://”的数据集

希望能给你一些帮助

【讨论】:

感谢 Lenoarod,但我尝试了并在 click_action 参数中使用了 url,但它不起作用。 将 click_action 设置为“ACTION_VIEW”并且数据是 URL 无效? 我不想更改当前的源代码。正如我所说的 googlePlay 上发布的 apk 我的意思是你在通知负载中设置了它。 @Lenoarod 你会在哪里指定网址?你说尝试使用"click_action": "Intent.ACTION_VIEW",但是在哪里设置实际的URL?因为如果应用程序在后台,并且通知同时具有NotificationData,FCM 将自动发出通知而不调用onMessageReceived()。这就是我想要的,因为这样 FCM 会为我检索image(如果您尝试自己获取,由于节电机制,某些设备将不允许,这会阻止后台网络)。【参考方案2】:

在 PendingIntent 中传递 setData 的 Intent。

Intent notificationIntent = new Intent(Intent.ACTION_VIEW);
notificationIntent.setData(Uri.parse(link));

PendingIntent pending = PendingIntent.getActivity(this, 0, notificationIntent, 
Intent.FLAG_ACTIVITY_NEW_TASK);
myNotification.setContentIntent(pending);

【讨论】:

以上是关于单击 fcm 通知而不是打开启动器活动时打开浏览器的主要内容,如果未能解决你的问题,请参考以下文章

FCM 点击如何在应用程序处于后台状态时打开用户指定的活动而不是默认活动

单击推送通知时对特定活动的意图。

在收到 Firebase 通知时打开应用 (FCM)

在运行和终止时处理 FCM 通知

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

单击 FCM 通知时,Flutter Notification 挂起的意图被取消