2012-04-10 96 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觸發事件