如何在原生安卓应用中使用Webview实现Web推送通知?

14

我有一个响应式网站,并启用了推送通知功能。如果我在我的本地Android应用程序中使用 WebView 加载我的网站,那么通常会在Chrome/Firefox中弹出询问用户是否允许推送通知的窗口,在 WebView 中不会显示。显然,WebView 不支持移动应用程序的同样的网络推送通知。我知道如何在应用程序中实现 GCM 或 FCM 来启用移动推送,但我想知道是否可能仅通过将 web 推送通知与 Android WebView 相结合来使其在我的应用程序中像在 Chrome/Firefox 等中一样工作。

我尝试过的:深入挖掘后,我最终得出结论,由于 Android WebView 不支持 Push Api(借助于 caniuse.com),目前不能通过使用 WebView 将 web 推送与移动推送相结合。我是对的吗?或者已经有任何应用程序这样做了吗?有没有什么办法可以实现?


这里的“club”是什么意思? - sideshowbarker
2
不,目前 WebView 不支持 Web 推送。 - collimarco
@Sash_KP,你最终解决了这个问题吗? - Vivek
@Vivek 不是很确定。 - Sash_KP
好的 @Sash_KP,还有其他方法吗?请建议。 - Vivek
显示剩余2条评论
2个回答

1
当然,这是可能的!我使用Crosswalk轻松地在我的Webview应用程序中实现了来自OneSignal的推送网页通知。
使用Crosswalk,扩展主活动到XWalkactivity。 将以下内容放置在onCreate中:
OneSignal.startInit(this)
                .inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
                .unsubscribeWhenNotificationsAreDisabled(true)
                .init();

是的,您将拥有工作的Web推送通知!!!


4
兄弟,这不是网页通知。这只是使用OneSignal SDK发送的FCM通知。 - fuliozor

-1
据我所知,仅使用 WebView 是不可能的。
对我有效的解决方案是查找您想在 WebView 中显示的网站是否使用 WebSockets。如果是,则通知可能会在相应的 WebSocket 通信中可用。工作流程如下:
  1. 确定网站上的WebSocket。您可以使用Firefox的“检查代码”功能,并在“网络”选项卡中仅过滤WebSocket条目。

  2. 您可以通过各种工具测试与ws的连接。Firefox的Simple-WebSocket-Client命令行工具。只需提供WebSocket的URI(ws://domain.example/ws)即可。

  3. 在应用程序中实现WebSocket客户端。有不同的帖子介绍如何做到这一点。我使用this lib使其更加美观和干净。

  4. 现在您正在从服务器接收消息,例如通知。

  5. 解析它们并执行您想要的任何操作。


1
所以,您的Web应用程序在Web视图中接收通知,并调用主应用程序?您能分享一些教程或示例代码吗?谢谢。 - Alberto Acuña

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