单击 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?因为如果应用程序在后台,并且通知同时具有Notification
和Data
,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 通知而不是打开启动器活动时打开浏览器的主要内容,如果未能解决你的问题,请参考以下文章