1、java伺服器推送消息給android
幾種常見的解決方案實現原理
1)輪詢(Pull)方式:客戶端定時向伺服器發送詢問消息,一旦伺服器有變化則立即同步消息。
2)SMS(Push)方式:通過攔截SMS消息並且解析消息內容來了解伺服器的命令,但這種方式一般用戶在經濟上很難承受。
3)持久連接(Push)方式:客戶端和伺服器之間建立長久連接,這樣就可以實現消息的及時行和實時性。
3、消息推送解決方案概述
A、C2DM雲端推送方案
在Android手機平台上,Google提供了C2DM(Cloudto Device Messaging)服務。Android
Cloud to Device Messaging (C2DM)是一個用來幫助開發者從伺服器向Android應用程序發送數據的服務。該服務提供了一個簡單的、輕量級的機制,允許伺服器可以通知移動應用程序直接與伺服器進行通信,以便於從伺服器獲取應用程序更新和用戶數據。
該方案存在的主要問題是C2DM需要依賴於Google官方提供的C2DM伺服器,由於國內的網路環境,這個服務經常不可用。
B、MQTT協議實現Android推送
採用MQTT協議實現Android推送功能也是一種解決方案。MQTT是一個輕量級的消息發布/訂閱協議,它是實現基於手機客戶端的消息推送伺服器的理想解決方案。
wmqtt.jar
是IBM提供的MQTT協議的實現。我們可以從這里(https://github.com/toku/AndroidPushNotificationsDemo)下載該項目的實例代碼,並且可以找到一個採用PHP書寫的伺服器端實現(https://github.com/toku/PhpMQTTClient)。
C、RSMB實現推送功能
Really Small Message Broker (RSMB)
,是一個簡單的MQTT代理,同樣由IBM提供,其查看地址是:http://www.alphaworks.ibm.com/tech/rsmb。預設打開1883埠,應用程序當中,它負責接收來自伺服器的消息並將其轉發給指定的移動設備。SAM是一個針對MQTT寫的PHP庫。我們可以從這個http://pecl.php.net/package/sam/download/0.2.0地址下載它.
D、XMPP協議實現Android推送
Google官方的C2DM伺服器底層也是採用XMPP協議進行的封裝。XMPP(可擴展通訊和表示協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線探測。這個協議可能最終允許網際網路用戶向網際網路上的其他任何人發送即時消息。
androidpn是一個基於XMPP協議的java開源Android push notification實現。它包含了完整的客戶端和伺服器端。但也存在一些不足之處:
1)
比如時間過長時,就再也收不到推送的信息了。
2)性能上也不夠穩定。
3)如果將消息從伺服器上推送出去,就不再管理了,不管消息是否成功到達客戶端手機上。
如果我們要使用androidpn,則還需要做大量的工作,需要理解XMPP協議、理解Androidpn的實現機制,需要調試內部存在的BUG。
2、android消息推送怎麼實現?
1.推送方式基礎知識:
在移動互聯網時代以前的手機,如果有事情發生需要通知用戶,則會有一個窗口彈出,將告訴用戶正在發生什麼事情。可能是未接電話的提示,日歷的提醒,或是一封新的彩信。推送功能最早是被用於Email中,用來提示我們新的信息。由於時代的發展和移動互聯網的熱潮,推送功能更加地普及,已經不再僅僅用在推送郵件了,更多地用在我們的APP中了。
當我們開發需要和伺服器交互的應用程序時,基本上都需要獲取伺服器端的數據,比如《地震應急通》就需要及時獲取伺服器上最新的地震信息。要獲取伺服器上不定時更新的信息,一般來說有兩種方法:第一種是客戶端使用Pull(拉)的方式,就是隔一段時間就去伺服器上獲取一下信息,看是否有更新的信息出現。第二種就是 伺服器使用Push(推送)的方式,當伺服器端有新信息了,則把最新的信息Push到客戶端上。這樣,客戶端就能自動的接收到消息。
雖然Pull和Push兩種方式都能實現獲取伺服器端更新信息的功能,但是明顯來說Push方式比Pull方式更優越。因為Pull方式更費客戶端的網路流量,更主要的是費電量,還需要我們的程序不停地去監測服務端的變化。
在開發Android和iPhone應用程序時,我們往往需要從伺服器不定的向手機客戶端即時推送各種通知消息。我們只需要在Android或IPhone的通知欄處向下一拉,就展開了Notification Panel,可以集中一覽各種各樣通知消息。目前IOS平台上已經有了比較簡單的和完美的推送通知解決方案,我會在以後詳細介紹IPhone中的解決方案,可是Android平台上實現起來卻相對比較麻煩。
最近利用幾天的時間對Android的推送通知服務進行初步的研究,也希望能和大家共同探討一下。
2. 幾種常見的解決方案實現原理:
1)輪詢(Pull)方式:應用程序應當階段性的與伺服器進行連接並查詢是否有新的消息到達,你必須自己實現與伺服器之間的通信,例如消息排隊等。而且你還要考慮輪詢的頻率,如果太慢可能導致某些消息的延遲,如果太快,則會大量消耗網路帶寬和電池。
2)SMS(Push)方式:在Android平台上,你可以通過攔截SMS消息並且解析消息內容來了解伺服器的意圖,並獲取其顯示內容進行處理。這是一個不錯的想法,我就見過採用這個方案的應用程序。這個方案的好處是,可以實現完全的實時操作。但是問題是這個方案的成本相對比較高,我們需要向移動公司繳納相應的費用。我們目前很難找到免費的短消息發送網關來實現這種方案。
3)持久連接(Push)方式:這個方案可以解決由輪詢帶來的性能問題,但是還是會消耗手機的電池。IOS平台的推送服務之所以工作的很好,是因為每一台手機僅僅保持一個與伺服器之間的連接,事實上C2DM也是這么工作的。不過剛才也講了,這個方案存在著很多的不足之處,就是我們很難在手機上實現一個可靠的服務,目前也無法與IOS平台的推送功能相比。
Android操作系統允許在低內存情況下殺死系統服務,所以我們的推送通知服務很有可能就被操作系統Kill掉了。 輪詢(Pull)方式和SMS(Push)方式這兩個方案也存在明顯的不足。至於持久連接(Push)方案也有不足,不過我們可以通過良好的設計來彌補,以便於讓該方案可以有效的工作。畢竟,我們要知道GMail,GTalk以及GoogleVoice都可以實現實時更新的。3.第一種解決方案:C2DM雲端推送功能。
在Android手機平台上,Google提供了C2DM(Cloudto Device Messaging)服務,起初我就是准備採用這個服務來實現自己手機上的推送功能,並將其帶入自己的項目中。
3、伺服器端如何主動將消息推送到Android手機
Thank you for your help!問題補充:laorer 寫道
...應該是客戶端主動定時去連伺服器端,這種操作最好要讓用戶知道
第二個問題應該是不是在用戶連接到手機時,存到一個地方,或者內存中,或者資料庫中
但是現在的需求是當資料庫有更新時就要主動發送一個更新通知給所有的客戶端,然後客戶端接到這個通知後才到伺服器端取數據。你說的那是輪詢,暫時還不想用這種方法,呵呵。問題補充:laorer 寫道
如果你只是想把消息發給現在在線的用戶的話,那麼客戶端肯定需要一個監聽程序,來監聽來自伺服器的消息,
而服務端則在有新數據時,檢查在線的用戶並獲取相關信息,然後發個消息給客戶端的監聽埠
android是linux內核的,而且能連網路,那麼肯定是要埠來連接的,這是我的推測,沒有去找相關的資料
如果是手機的話,是不是會發條簡訊給手機,畢竟這樣不需要知道IP之類的東西
瀏覽器請求服務時,肯定是瀏覽器定時去伺服器請求的,才可能知道有沒有新的內容
關於在Android手機端開放監聽埠,我再研究一下,值得借鑒。問題補充:laorer 寫道
如果你是自己來管理這些的話,那麼當用戶連接到伺服器時,你需要把用戶的這些內容寫到伺服器的文本或者資料庫或者直接保存到內存中,然後用戶斷開後,把相應的用戶信息刪掉
這樣當資料庫有新消息時,你可以從保存用戶信息的地方得到所有的連線用戶,發消息給用戶的話,就是把消息發給用戶的IP和監聽埠,如果客戶端有http服務的話,你也可以直接發送http信息到這個客戶端的http服務上
這只是我的想法,你做個參考吧
4、安卓手機里的推送服務是什麼?
系統推送服務是比較好的功能,不讓你錯失重要的更新信息等,本身是很好的。不過被很多軟體利用於發布廣告,所以顯得比較惡心。
一般軟體的推送服務是可以關閉的(即使是系統自帶的正版軟體一般都有這個選項,例如QQ、新浪微博等),在設置裡面仔細找找,「關閉推送」或者「關閉新消息提示」之類的。
如果是手機中內置了一些小軟體或者自己安裝了一些小軟體,它本身就要推送廣告賺點擊賺錢,這個是關閉不了的,煩不勝煩的話,只有刪除不用,系統自帶的垃圾軟體還要ROOT才能刪。
最後,堅決刪除推送廣告的小軟體,保留自己要用的軟體的推送通知,你就發現該來的才來,不該來的不會來,屏幕自然干凈心情就會不錯的。
5、伺服器主動向android客戶端發送消息用什麼機制比較好
一、消息推送基礎
消息推送,就是在互聯網上通過定期傳送用戶需要的信息來減少信息過載的一項新技術。推送技術通過自動傳送信息給用戶,來減少用於網路上搜索的時間。它根據用戶的興趣來搜索、過濾信息,並將其定期推給用戶,幫助用戶高效率地發掘有價值的信息
當我們開發需要和伺服器交互的移動應用時,基本上都需要和伺服器進行交互,包括上傳數據到伺服器,同時從伺服器上獲取數據。
一般情況下,客戶端與伺服器之間通訊客戶端是主動的,但這就存在一個問題就是一旦伺服器數據有更新或者伺服器要下發通知給客戶端只能等客戶端連接的時候才能實現。這種方式使消息失去了實時性。
如何使客戶端能夠實時的收到伺服器的消息和通知,總體來說有兩種方式,第一種是客戶端使用Pull(拉)的方式,就是隔一段時間就去伺服器上獲取一下信息,看是否有更新的信息出現。第二種就是 伺服器使用Push(推送)的方式,當伺服器端有新信息了,則把最新的信息Push到客戶端上。這樣,客戶端就能自動的接收到消息。
雖然Pull和Push兩種方式都能實現獲取伺服器端更新信息的功能,但是明顯來說Push方式比Pull方式更優越。因為Pull方式更費客戶端的網路流量,更主要的是費電量,還需要我們的程序不停地去監測服務端的變化。
二、幾種常見的解決方案實現原理
1)輪詢(Pull)方式:客戶端定時向伺服器發送詢問消息,一旦伺服器有變化則立即同步消息。
2)SMS(Push)方式:通過攔截SMS消息並且解析消息內容來了解伺服器的命令,但這種方式一般用戶在經濟上很難承受。
3)持久連接(Push)方式:客戶端和伺服器之間建立長久連接,這樣就可以實現消息的及時行和實時性。
三、消息推送解決方案概述
A、C2DM雲端推送方案
在Android手機平台上,Google提供了C2DM(Cloudto Device Messaging)服務。Android Cloud to Device Messaging (C2DM)是一個用來幫助開發者從伺服器向Android應用程序發送數據的服務。該服務提供了一個簡單的、輕量級的機制,允許伺服器可以通知移動應用程序直接與伺服器進行通信,以便於從伺服器獲取應用程序更新和用戶數據。
該方案存在的主要問題是C2DM需要依賴於Google官方提供的C2DM伺服器,由於國內的網路環境,這個服務經常不可用。
6、怎麼實現伺服器給android客戶端主動推送消息
採用MQTT協議實現Android推送功能是一種解決方案。MQTT是一個輕量級的消息發布/訂閱協議,是實現基於手機客戶端的消息推送伺服器的理想解決方案。
常見的解決方案實現原理:
1、輪詢(Pull)方式:客戶端定時向伺服器發送詢問消息,一旦伺服器有變化則立即同步消息。
2、SMS(Push)方式:通過攔截SMS消息並且解析消息內容來了解伺服器的命令,但這種方式一般用戶在經濟上很難承受。
3、持久連接(Push)方式:客戶端和伺服器之間建立長久連接,這樣就可以實現消息的及時行和實時性。
(6)android推送伺服器擴展資料:
推送消息注意事項:
1、支持第三方推送內容,是要客戶端和伺服器都支持的,客戶端和伺服器都導入推送SDK。
2、伺服器推送內容,可以精確指定推送時間,推送的具體接收人,用戶群,位置。
3、即推送的維度可以使時間,位置,人群。
4、極光使用了兩種不同的通知方式,一種是推送通知,一種是推送消息。
5、如果要使用androidpn,則還需要做大量的工作,需要理解XMPP協議、理解Androidpn的實現機制,需要調試內部存在的BUG。
參考資料來源:網路-伺服器
參考資料來源:網路-Android客戶端
參考資料來源:網路-信息推送
7、如何實現伺服器給android客戶端主動推送消息
一、消息推送基礎
消息推送,就是在互聯網上通過定期傳送用戶需要的信息來減少信息過載的一項新技術。推送技術通過自動傳送信息給用戶,來減少用於網路上搜索的時間。它根據用戶的興趣來搜索、過濾信息,並將其定期推給用戶,幫助用戶高效率地發掘有價值的信息
當我們開發需要和伺服器交互的移動應用時,基本上都需要和伺服器進行交互,包括上傳數據到伺服器,同時從伺服器上獲取數據。
一般情況下,客戶端與伺服器之間通訊客戶端是主動的,但這就存在一個問題就是一旦伺服器數據有更新或者伺服器要下發通知給客戶端只能等客戶端連接的時候才能實現。這種方式使消息失去了實時性。
8、如何搭建android推送mptt伺服器
近研究了一下Android推送,在網上搜到了很多種方式,覺得IBM的MQTT協議這種方式還是挺不錯的。
下面介紹一下搭建過程:
需要准備的工具如下:
(1)、下載Mosquitto(MQTT的代理,也可以用IBM的ISMB)
http://mosquitto.org/download/
我下載的是mosquitto-1.1.2-install-win32.exe,根據自己的需要下載,不安裝這個推送不了消息。
(2)、下載AndroidPushNotificationsDemo
https://github.com/toku/Androi ... /archive/master.zip
(3)、下載PhpMQTTClient
https://github.com/toku/PhpMQTTClient/archive/master.zip
將PHPMQTTClient部署到PHP伺服器上,運行,打開mosquitto安裝目錄的mosquitto.exe
9、如何實現伺服器給android客戶端主動推送消
一、消息推送基礎
消息推送,就是在互聯網上通過定期傳送用戶需要的信息來減少信息過載的一項新技術。推送技術通過自動傳送信息給用戶,來減少用於網路上搜索的時間。它根據用戶的興趣來搜索、過濾信息,並將其定期推給用戶,幫助用戶高效率地發掘有價值的信息。
當我們開發需要和伺服器交互的移動應用時,基本上都需要和伺服器進行交互,包括上傳數據到伺服器,同時從伺服器上獲取數據。
一般情況下,客戶端與伺服器之間通訊客戶端是主動的,但這就存在一個問題就是一旦伺服器數據有更新或者伺服器要下發通知給客戶端只能等客戶端連接的時候才能實現。這種方式使消息失去了實時性。
如何使客戶端能夠實時的收到伺服器的消息和通知,總體來說有兩種方式,第一種是客戶端使用Pull(拉)的方式,就是隔一段時間就去伺服器上獲取一下信息,看是否有更新的信息出現。第二種就是伺服器使用Push(推送)的方式,當伺服器端有新信息了,則把最新的信息Push到客戶端上。這樣,客戶端就能自動的接收到消息。
雖然Pull和Push兩種方式都能實現獲取伺服器端更新信息的功能,但是明顯來說Push方式比Pull方式更優越。因為Pull方式更費客戶端的網路流量,更主要的是費電量,還需要我們的程序不停地去監測服務端的變化。
二、幾種常見的解決方案實現原理
1)輪詢(Pull)方式:客戶端定時向伺服器發送詢問消息,一旦伺服器有變化則立即同步消息。
2)SMS(Push)方式:通過攔截SMS消息並且解析消息內容來了解伺服器的命令,但這種方式一般用戶在經濟上很難承受。
3)持久連接(Push)方式:客戶端和伺服器之間建立長久連接,這樣就可以實現消息的及時行和實時性。
三、消息推送解決方案概述
A、C2DM雲端推送方案
在Android手機平台上,Google提供了C2DM(Cloudto Device Messaging)服務。Android Cloud to Device Messaging (C2DM)是一個用來幫助開發者從伺服器向Android應用程序發送數據的服務。該服務提供了一個簡單的、輕量級的機制,允許伺服器可以通知移動應用程序直接與伺服器進行通信,以便於從伺服器獲取應用程序更新和用戶數據。
該方案存在的主要問題是C2DM需要依賴於Google官方提供的C2DM伺服器,由於國內的網路環境,這個服務經常不可用。
B、MQTT協議實現Android推送
採用MQTT協議實現Android推送功能也是一種解決方案。MQTT是一個輕量級的消息發布/訂閱協議,它是實現基於手機客戶端的消息推送伺服器的理想解決方案。
wmqtt.jar 是IBM提供的MQTT協議的實現。我們可以從這里(https://github.com/toku/AndroidPushNotificationsDemo)下載該項目的實例代碼,並且可以找到一個採用PHP書寫的伺服器端實現(https://github.com/toku/PhpMQTTClient)。
C、RSMB實現推送功能
Really Small Message Broker (RSMB) ,是一個簡單的MQTT代理,同樣由IBM提供,其查看地址是:http://www.alphaworks.ibm.com/tech/rsmb。預設打開1883埠,應用程序當中,它負責接收來自伺服器的消息並將其轉發給指定的移動設備。SAM是一個針對MQTT寫的PHP庫。我們可以從這個http://pecl.php.net/package/sam/download/0.2.0地址下載它。
D、XMPP協議實現Android推送
Google官方的C2DM伺服器底層也是採用XMPP協議進行的封裝。XMPP(可擴展通訊和表示協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線探測。這個協議可能最終允許網際網路用戶向網際網路上的其他任何人發送即時消息。
androidpn是一個基於XMPP協議的java開源Android push notification實現。它包含了完整的客戶端和伺服器端。但也存在一些不足之處:
1) 比如時間過長時,就再也收不到推送的信息了。
2)性能上也不夠穩定。
3)如果將消息從伺服器上推送出去,就不再管理了,不管消息是否成功到達客戶端手機上。
如果我們要使用androidpn,則還需要做大量的工作,需要理解XMPP協議、理解Androidpn的實現機制,需要調試內部存在的BUG。
E、使用第三方平台
目前國內、國外有一些推送平台可供使用,但是涉及到收費問題、保密問題、服務質量問題、擴展問題等等,又不得不是我們望而卻步。
10、Android中消息推送有哪幾種方式?
消息推送,就是在互聯網上通過定期傳送用戶需要的信息來減少信息過載的一項新技術。推送技術通過自動傳送信息給用戶,來減少用於網路上搜索的時間。它根據用戶的興趣來搜索、過濾信息,並將其定期推給用戶,幫助用戶高效率地發掘有價值的信息。
開發需要和伺服器交互的移動應用時,基本上都需要和伺服器進行交互,包括上傳數據到伺服器,同時從伺服器上獲取數據。
一般情況下,客戶端與伺服器之間通訊客戶端是主動的,一旦伺服器數據有更新或者伺服器要下發通知給客戶端只能等客戶端連接的時候才能實現。
使客戶端能夠實時的收到伺服器的消息和通知,總體來說有兩種方式,第一種是客戶端使用Pull(拉)的方式,就是隔一段時間就去伺服器上獲取一下信息,看是否有更新的信息出現。第二種就是 伺服器使用Push(推送)的方式,當伺服器端有新信息了,則把最新的信息Push到客戶端上。這樣,客戶端就能自動的接收到消息。
雖然Pull和Push兩種方式都能實現獲取伺服器端更新信息的功能,但是明顯來說Push方式比Pull方式更優越。因為Pull方式更費客戶端的網路流量,更主要的是費電量,還需要我們的程序不停地去監測服務端的變化。
常見的實現原理
1、輪詢(Pull)方式:客戶端定時向伺服器發送詢問消息,一旦伺服器有變化則立即同步消息。
2、SMS(Push)方式:通過攔截SMS消息並且解析消息內容來了解伺服器的命令,但這種方式一般用戶在經濟上很難承受。
3、持久連接(Push)方式:客戶端和伺服器之間建立長久連接,這樣就可以實現消息的及時行和實時性。
消息推送解決方案概述
A、C2DM雲端推送方案
在Android手機平台上,Google提供了C2DM(Cloudto Device Messaging)服務。Android Cloud to Device Messaging (C2DM)是一個用來幫助開發者從伺服器向Android應用程序發送數據的服務。該服務提供了一個簡單的、輕量級的機制,允許伺服器可以通知移動應用程序直接與伺服器進行通信,以便於從伺服器獲取應用程序更新和用戶數據。
該方案存在的主要問題是C2DM需要依賴於Google官方提供的C2DM伺服器,由於國內的網路環境,這個服務經常不可用。
B、MQTT協議實現Android推送
採用MQTT協議實現Android推送功能也是一種解決方案。MQTT是一個輕量級的消息發布/訂閱協議,它是實現基於手機客戶端的消息推送伺服器的理想解決方案。
wmqtt.jar 是IBM提供的MQTT協議的實現。我們可以從這里(https://github.com/toku/AndroidPushNotificationsDemo)下載該項目的實例代碼,並且可以找到一個採用PHP書寫的伺服器端實現(https://github.com/toku/PhpMQTTClient)。
C、RSMB實現推送功能
Really Small Message Broker (RSMB) ,是一個簡單的MQTT代理,同樣由IBM提供,其查看地址是:http://www.alphaworks.ibm.com/tech/rsmb。預設打開1883埠,應用程序當中,它負責接收來自伺服器的消息並將其轉發給指定的移動設備。SAM是一個針對MQTT寫的PHP庫。我們可以從這個http://pecl.php.net/package/sam/download/0.2.0地址下載它.
D、XMPP協議實現Android推送
Google官方的C2DM伺服器底層也是採用XMPP協議進行的封裝。XMPP(可擴展通訊和表示協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線探測。這個協議可能最終允許網際網路用戶向網際網路上的其他任何人發送即時消息。
androidpn是一個基於XMPP協議的java開源Android push notification實現。它包含了完整的客戶端和伺服器端。但也存在一些不足之處:
1) 比如時間過長時,就再也收不到推送的信息了。
2)性能上也不夠穩定。
3)如果將消息從伺服器上推送出去,就不再管理了,不管消息是否成功到達客戶端手機上。
如果我們要使用androidpn,則還需要做大量的工作,需要理解XMPP協議、理解Androidpn的實現機制,需要調試內部存在的BUG。