移动Web中的推送通知

5

是否可以在移动设备上收到从Web服务器生成的通知?

原生iPhone和Android应用程序可以实现这一点。 但我的要求是通过移动网站实现相同的功能。 即使用户关闭了Web浏览器,也可以接收通知吗?


现在可以使用针对所有主要浏览器实施的标准Web API来完成。请参见https://dev59.com/n1wY5IYBdhLWcg3wj4Rr#32502379 - sideshowbarker
3个回答

2

要实现这一目标,有两种主要的方法:

  1. WebSockets(需要HTML 5)
  2. HTTP长轮询

这两种方法都需要一些特殊的服务器软件,一个很好的例子是在Node.JS平台上运行的Socket.IO。

Websockets需要一个支持HTML 5的浏览器(例如Chrome),因此可能无法满足您的要求。

HTTP长轮询是指在服务器上接受入站HTTP连接,然后休眠直到您希望将数据推送到客户端。Node.JS可以很容易地设置为执行此操作,或者您可以使用Socket.IO(Node.JS上的库),它提供了额外的功能。Socket.IO也尽可能地与Websockets一起工作,并在必要时退回到长轮询。

简而言之,您需要一个服务器平台来实现此目标-我建议您首先查看Socket.IO。一旦掌握了主要概念,您总可以自己编写代码。例如,我曾经在ASP.net中编写过一个相当不错的程序。


如果浏览器关闭了,推送通知会到达吗? - Tanmay Mandal
由于应用程序是在浏览器中使用Javascript编写的,但该浏览器已不再存在。我认为您需要创建一个移动应用程序来处理消息传输 - 在Android上,您可以将其作为服务运行。然后,您可以将移动HTML / JS放入此应用程序中并直接进行渲染 - 或者将整个内容包装在Phonegap中... - justacodemonkey

1

当浏览器页面关闭后,无法接收通知。通知是由在智能手机操作系统后台运行的应用程序触发的。


0

您也可以使用服务器发送事件(SSE)来实现此目的。如果我没记错,Android ICS支持SSE。HTML5 rocks(http://www.html5rocks.com/en/tutorials/eventsource/basics/)有一篇关于此的文章,并指向一个演示(http://googlecodesamples.com/html5/sse/sse.html)。

然而,如果您希望应用程序在旧版Android设备上运行,则这些解决方案(Websockets、SSE)都没有用处。如果您希望在应用程序未启动时接收推送,则这些解决方案也没有用处。最好的解决方案是构建某种混合应用程序,如richbayliss所建议的那样。我想您并不真正需要phonegap来实现这一点。您可以使用WebView的loadDataWithBaseURL方法触发事件。


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