每当从 Web 服务器生成通知时,是否可以在移动设备上接收通知。
这件事可以通过 iPhone 和 Android 的原生应用程序来实现。但我的要求是通过移动网站实现相同的目标。即使用户关闭了网络浏览器,也可以接收通知。
每当从 Web 服务器生成通知时,是否可以在移动设备上接收通知。
这件事可以通过 iPhone 和 Android 的原生应用程序来实现。但我的要求是通过移动网站实现相同的目标。即使用户关闭了网络浏览器,也可以接收通知。
有可能实现,您有两种主要方法可以实现这一目标:
这两种方法都需要一些技巧服务器软件,一个很好的例子是在 Node.JS 平台上运行的 Socket.IO。
Websocket 需要 HTML 5 浏览器(例如 Chrome),因此可能无法满足您的要求。
HTTP 长轮询是在服务器上接受入站 HTTP 连接的行为,然后休眠直到您希望将数据推送到客户端。Node.JS 可以很容易地设置为执行此操作,或者您可以使用提供额外功能的 Socket.IO(Node.JS 上的库)。Socket.IO 还可以在可能的情况下与 Websockets 一起使用——如果必须的话,它会退回到长轮询。
简而言之,您将需要一个服务器平台来执行此操作 - 我建议您从 Socket.IO 开始。一旦你确定了主要概念,你总是可以自己动手。例如,我在 ASP.net 中写了一个效果很好的。
一旦浏览器中的页面关闭,就不可能收到通知。通知由在智能手机操作系统后台运行的应用程序触发。
为此,您还可以使用服务器发送事件 (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 触发事件