FCM通知在点击时总是在新标签页中打开(Web应用程序Polymer)

4
我正在尝试在一个Web应用程序中(使用Polymer和服务工作者,并使用SDK的自定义-sw)实现Firebase Cloud Messaging。它在桌面和安卓上都很好用,但当用户单击通知时,即使已经打开了同一源的选项卡(但未聚焦),它仍然会在新标签页中打开click_action。 click_action = "https://example.firebaseapp.com/demo/command" 不活动选项卡的URL = "https://example.firebaseapp.com/demo" FCM SDK的getWindowClient_方法似乎无法正确解析活动客户端的URL,因此无法调用非活动选项卡上的focus()。有什么想法如何解决这个问题吗?
1个回答

2

这就是它的设计方式。一开始我有些措手不及,但之后我思考了一下,新建标签页/窗口的做法还是合理的。

1) Service Worker 是一个独立于浏览器的进程。 2) 当通知显示时,它与浏览器的标签页/窗口无关联。 3) 在现有窗口中更改 URL 很可能会让用户感到困惑/烦恼。

当用户点击你的按钮时,通知会认为该来源没有活动的标签页。因此,它会打开一个新窗口。


所以无法将具有与“click_action”相同来源的选项卡集中吗?服务工作者每次都必须打开一个新选项卡吗?如果Web应用程序处于独立模式下呢?(令人惊讶的是,因为FCM SDK似乎正在尝试检索具有相同来源的选项卡) - Nicolas D
1
我有同样的问题,如果你尝试从 https://github.com/firebase/quickstart-js 中获取示例,所有的操作都会按预期进行,在点击推送通知后,用户将被重定向到已经打开的标签页。但是我无法在我的应用程序中使其工作。 - demsey
我已经解决了这个问题,但URL必须完全相同,包括哈希符号(如果有)。 - demsey
请告诉我您所说的哈希符号是什么意思,@demsey。 - Sulaiman
url.com#!example 或 url.com#example - demsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接