2012-04-10 94 views
5

是否有可能在移动设备上收到来自Web服务器的通知。移动网络中的推送通知

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

+0

现在可以使用标准的Web API来实现所有主流浏览器。请参阅http://stackoverflow.com/a/32502379/441757 – sideshowbarker 2015-09-14 03:34:09

回答

2

有可能acheive,你有两个主要方式来实现这一目标:

  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中写了一篇很好的文章。

+0

如果浏览器关闭,推送通知是否会到达? – 2012-04-10 14:02:00

+0

否 - 作为在浏览器中的Javascript中的应用程序,它不再存在。我认为你需要创建一个移动应用程序来处理你的消息传输 - 在Android上你可以作为服务运行。然后,您可以将您的移动HTML/JS放入此应用程序并直接渲染 - 或者将整个程序包装在Phonegap中... – justacodemonkey 2012-04-10 14:04:17

1

一旦浏览器中的页面关闭,就不可能收到通知。通知是由在智能手机操作系统背景中运行的应用程序触发的。

0

您也可以使用Server Sent Events(SSE)来达到此目的。如果我没有错,Android ICS支持SSE。 HTML5岩石(http://www.html5rocks.com/en/tutorials/eventsource/basics/)有一篇关于这方面的文章,也指向一个演示(http://googlecodesamples.com/html5/sse/sse.html) 。

但是,如果您希望您的应用在较旧的Android设备上工作,则这些解决方案(网络套接字,SSE)都不会有用。如果您希望在应用程序未启动时收到推送,则这些解决方案无用。最好的解决方案是按照richbayliss的建议构建某种混合应用程序。我想你并不是真的需要这样的电话。您可以使用WebView的loadDataWithBaseURL触发事件