Android上Microsoft Edge中的Web推送通知不起作用

Android上Microsoft Edge中的Web推送通知不起作用,android,push-notification,microsoft-edge,Android,Push Notification,Microsoft Edge,我正在开发一个发送推送通知的网站,到目前为止,我已经用Chrome成功地测试了这个网站。我目前正在其他浏览器中测试,包括MicrosoftEdge,但我遇到了一些问题。我尝试发送的任何推送通知都只会显示文本“此站点已在后台更新”。为了解决这个问题,我用谷歌自己的一个例子重现了这个问题: 逐步: 按照文本中所述设置示例(包括使用来自配套站点的正确公钥) 使生成的站点可用于您的Android手机,例如使用ngrok 在手机上使用Edge访问网站,启用通知并复制订阅信息 使用订阅信息从同伴站点发送消

我正在开发一个发送推送通知的网站,到目前为止,我已经用Chrome成功地测试了这个网站。我目前正在其他浏览器中测试,包括MicrosoftEdge,但我遇到了一些问题。我尝试发送的任何推送通知都只会显示文本“此站点已在后台更新”。为了解决这个问题,我用谷歌自己的一个例子重现了这个问题:

逐步:

  • 按照文本中所述设置示例(包括使用来自配套站点的正确公钥)
  • 使生成的站点可用于您的Android手机,例如使用ngrok
  • 在手机上使用Edge访问网站,启用通知并复制订阅信息
  • 使用订阅信息从同伴站点发送消息
  • 预期结果: 通知应显示在伴随站点中发送的数据

    实际结果: 若站点位于前台,则不会显示任何通知 如果站点位于后台,则会显示一条通知,其中包含文本“此站点已在后台更新”


    有人知道这是否适用于mobile Edge浏览器,以及可能出现的问题是什么吗?

    几个星期/几个月以来,我一直在研究解决方案。但是没有任何结果

    我使用这个库编写了一个网页来测试webpush并获得一些调试结果:

    一步一步:

    • 从Javascript:
      • 您必须创建一个服务人员
      • 您需要订阅一个端点
      • 您需要将端点数据发送到服务器
    现在是第一个异常:
    Edge应提供如下链接(在Edge上为Windows创建):

    但您将收到如下链接:

    https://fcm.googleapis.com/fcm/send/cGi0NgjCSa4:APA91bG9nWfn6UKevtmQjMdzSnleKGLnz4XPx-pfISfCT8ypWwUsfsiSiOwpd91-S-u3D_u3c2M1VVxZapS8StQHhH_asqDwseiTLKusw-5ARQ2siFwVlHnz6txZvJRtMoCVSk1U0_3U
    
    所以,即使它是微软的产品,你也会得到一个谷歌链接

    一步一步:

    • 从PHP服务器
      • 创建有效的无PID代码
      • 将消息发送到端点服务器
      • 检查服务器是否已接受该消息
    • 从网页
      • 等待推送通知
    现在是第二个异常:
    谷歌服务器正在接受发送的消息,并将其转发到网页。 不幸的是消息是空的! 您可以使用不同的设置(无填充、aesgcm加密、不同的有效载荷),结果总是一样的

    那么,为什么它不起作用呢?
    1-Android的Edge从2019年夏季开始(2020年12月)仍在使用chromium 77.0.3865.116
    2-Microsoft正在将请求重定向到Google服务器,而不是Microsoft服务器
    3-Google FCM正在发送一条空消息(即使有效负载被成功接受)

    许多问题同时出现。
    可能Chromium 77仍然无法正确订阅web推送通知。
    也许谷歌正在阻止所有Edge请求或删除所有有效负载,因为他们不想将Edge升级为浏览器

    希望微软能提供更多信息(技术社区:)

    另外,如果Edge是Android上的默认浏览器,则PWA的工作方式与预期不同:

    我无法在Android上的Edge中重现该问题。您在Android上使用的是哪个版本的Edge?Push Codelab网站可以很好地工作,但在配套网站中单击“发送推送消息”并没有在移动浏览器中显示任何通知或错误。您可以尝试清除浏览器缓存,然后重试或提供。我使用的是Edge 45.03.4.4955。我用预期和实际结果略微更新了问题。我得到不同的行为取决于网站是在前台还是后台。也许这就是你正在经历的。不管是哪种方式,它都不能像预期的那样工作。此外,谷歌的例子非常简单,所有的代码都准备好了,可以使用,并且有很好的文档记录。我真的不知道我如何才能让它比我自己更容易。现在我可以在Edge for Android中重现这个问题。我还可以在github上找到。我认为这可能是安卓Edge的一个问题。您可以在应用程序的“发送反馈”频道中向Edge for Android提供反馈。我还将与高级工程师讨论,并通知您是否有任何更新。在此期间有关于此问题的更新吗?我也经历过同样的,
    事件。数据
    恰好为空,在chrome和firefox for android中,它适用于meHi。有人对此有更新吗?我有完全相同的问题,移动边缘浏览器(桌面边缘工作)确实接收PushEvent,但该事件中的数据对象为null。我尝试通过firebase测试接口直接发送它,因此我确信消息发送是正确的。它在chrome(移动和桌面)和Edge的桌面版本上都可以使用,但mobile Edge无法使用:-(
    https://fcm.googleapis.com/fcm/send/cGi0NgjCSa4:APA91bG9nWfn6UKevtmQjMdzSnleKGLnz4XPx-pfISfCT8ypWwUsfsiSiOwpd91-S-u3D_u3c2M1VVxZapS8StQHhH_asqDwseiTLKusw-5ARQ2siFwVlHnz6txZvJRtMoCVSk1U0_3U