我尝试在网络应用中实施Firebase云消息传递(使用Polymer和服务工作者并使用SDK的custom-sw)。
它工作得很好(在桌面和Android上)但是当用户点击通知时,即使打开了相同来源的选项卡(但没有关注),它也总是在新选项卡中打开click_action
)。
click_action = "https://example.firebaseapp.com/demo/command"
无效标签的网址= "https://example.firebaseapp.com/demo"
似乎FCM SDK的getWindowClient_
方法无法正确解析活动客户端的网址,因此无法在非活动选项卡上调用focus()
。
知道如何解决这个问题吗?
答案 0 :(得分:1)
这就是它的设计方式。起初它让我措手不及,但在我想到之后,新的标签/窗口才有意义。
1)服务工作者是与浏览器不同的进程。 2)当通知显示时,它与浏览器选项卡/窗口无关。 3)更改现有窗口中的URL很可能会混淆/刺激用户。
当用户点击您的按钮时,通知假定原点上没有活动标签。所以它打开了一个新窗口。