默認
打賞 發表評論 16
一個基于MQTT通信協議的完整Android推送Demo [附件下載]
閱讀(73405) | 評論(16 收藏11 淘帖2 3

前言


目前市場上存在多種免費的云推送服務,比如:個推、JPush等,但從技術上講這畢竟是別人的東西,主要面向通用場景,特定場景下還是得自已來實現推送服務。

本文主要介紹的是基于MQTT實現一個簡單的Android消息推送系統。更多推送技術資料請見:http://www.uktmgv.tw/forum.php?mod=collection&action=view&ctid=11

通信協議比較


按照慣例,總是在跟類似的通信協議對比一下,以下內容搜集自網絡,僅供參考。

方案1:使用GCM服務(Google Cloud Messaging)

簡介:Google推出的云消息服務,即第二代的C2DM。
優點:Google提供的服務、原生、簡單,無需實現和部署服務端。
缺點:Android版本限制(必須大于2.2版本),該服務在國內不夠穩定、需要用戶綁定Google帳號,受限于Google。


方案2:使用XMPP協議(Openfire + Spark + Smack)

簡介:基于XML協議的通訊協議,前身是Jabber,目前已由IETF國際標準化組織完成了標準化工作。
優點:協議成熟、強大、可擴展性強、目前主要應用于許多聊天系統中,且已有開源的Java版的開發實例androidpn。
缺點:協議較復雜、冗余(基于XML)、費流量、費電,部署硬件成本高。


方案3:使用MQTT協議(更多信息見:http://mqtt.org/

簡介:輕量級的、基于代理的“發布/訂閱”模式的消息傳輸協議。
優點:協議簡潔、小巧、可擴展性強、省流量、省電,目前已經應用到企業領域(參考:mqtt.org/software),且已有C++版的服務端組件rsmb。
缺點:不夠成熟、實現較復雜、服務端組件rsmb不開源,部署硬件成本較高。


方案4:使用HTTP輪循方式

簡介:定時向HTTP服務端接口(Web Service API)獲取最新消息。
優點:實現簡單、可控性強,部署硬件成本低。
缺點:實時性差。


對各個方案的優缺點的研究和對比,推薦使用MQTT協議的方案進行實現,主要原因是:MQTT最快速,也最省流量(固定頭長度僅為2字節),且極易擴展,適合二次開發。接下來,我們就來分析使用MQTT方案進行Android消息的原理和方法,并架設自己的推送服務。

(即時通訊網注:作為通信協議,實際上Google的Protobuf也是個非常不錯的選擇,請見強列建議將Protobuf作為你的即時通訊應用數據傳輸格式,更多通信協議的選擇和對比文章請見:http://www.uktmgv.tw/forum.php?mod=collection&action=view&ctid=18

基于MQTT推送系統的技術原理


一個基于MQTT通信協議的完整Android推送Demo [附件下載]_a.png

實際上,其他推送系統(包括GCM、XMPP方案)的原理都與此類似。

推送服務端準備


  • 下載&解壓rsmb安裝包(下載地址:請見文末附件
  • 進入對應的目錄,比如32位的Linux系統則應該進入linux_ia32目錄。
  • 編輯配置文件broker_1883.cfg。

broker_1883.cfg的配置如下:
port 1883  
max_inflight_messages 10  
max_queued_messages 1000  

運行./broker broker_1883.cfg,顯示如下:
20120823 110454.039 CWNAN9999I Really Small Message Broker
20120823 110454.039 CWNAN9997I Licensed Materials - Property of IBM
20120823 110454.039 CWNAN9996I Copyright IBM Corp. 2007, 2010 All Rights Reserved
20120823 110454.039 CWNAN9995I US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
20120823 110454.039 CWNAN0049I Configuration file name is broker_1883.cfg
20120823 110454.040 CWNAN0053I Version 1.2.0, Aug 18 2010 17:03:35
20120823 110454.040 CWNAN0054I Features included: bridge
20120823 110454.040 CWNAN9993I Author: Ian Craggs ([url=mailto:[email protected]][email protected][/url])
20120823 110454.040 CWNAN0014I MQTT protocol starting, listening on port 1883
... ...

這樣,推送服務的服務端就已經準備好了,監聽1883端口。

推送客戶端準備


  • 下載&解壓AndroidPushNotificationsDemo項目(下載地址:請見文末附件
  • 將該項目導入Eclipse中(File -> Export -> Existing Projects into Workspace)
  • 修改PushService.java中的MQTT_HOST常量為推送服務端的IP地址。
  • 啟動Android模擬器,并安裝該項目。

注意:在新版本的Android SDK中可能會遇到以下錯誤:
.. ...
08-23 02:28:44.184: W/dalvikvm(282): VFY: unable to find class referenced in signature (Lcom/ibm/mqtt/MqttPersistence;)
08-23 02:28:44.194: I/dalvikvm(282): Failed resolving Lcom/tokudu/demo/PushService$MQTTConnection; interface 35 'Lcom/ibm/mqtt/MqttSimpleCallback;'
08-23 02:28:44.194: W/dalvikvm(282): Link of class 'Lcom/tokudu/demo/PushService$MQTTConnection;' failed
08-23 02:28:44.194: E/dalvikvm(282): Could not find class 'com.tokudu.demo.PushService$MQTTConnection', referenced from method com.tokudu.demo.PushService.connect
08-23 02:28:44.194: W/dalvikvm(282): VFY: unable to resolve new-instance 42 (Lcom/tokudu/demo/PushService$MQTTConnection;) in Lcom/tokudu/demo/PushService;
... ...
08-23 02:28:44.404: E/AndroidRuntime(282): java.lang.VerifyError: com.tokudu.demo.PushService
08-23 02:28:44.404: E/AndroidRuntime(282):     at com.tokudu.demo.PushActivity$1.onClick(PushActivity.java:32)
08-23 02:28:44.404: E/AndroidRuntime(282):     at android.view.View.performClick(View.java:2408)
08-23 02:28:44.404: E/AndroidRuntime(282):     at android.view.View$PerformClick.run(View.java:8816)
08-23 02:28:44.404: E/AndroidRuntime(282):     at android.os.Handler.handleCallback(Handler.java:587)
08-23 02:28:44.404: E/AndroidRuntime(282):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-23 02:28:44.404: E/AndroidRuntime(282):     at android.os.Looper.loop(Looper.java:123)
08-23 02:28:44.404: E/AndroidRuntime(282):     at android.app.ActivityThread.main(ActivityThread.java:4627)
08-23 02:28:44.404: E/AndroidRuntime(282):     at java.lang.reflect.Method.invokeNative(Native Method)
08-23 02:28:44.404: E/AndroidRuntime(282):     at java.lang.reflect.Method.invoke(Method.java:521)
08-23 02:28:44.404: E/AndroidRuntime(282):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-23 02:28:44.404: E/AndroidRuntime(282):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-23 02:28:44.404: E/AndroidRuntime(282):     at dalvik.system.NativeStart.main(Native Method)
... ...

原因是發布的時候沒有加入wmqtt.jar包,解決辦法如下:

  • 在項目根目錄下創建libs目錄,并把wmqtt.jar包移入該目錄。
  • 重新配置項目的Java Build Path(右鍵菜單中的Properties選項中)。
  • 重新打包發布即可。

運行效果如下:

一個基于MQTT通信協議的完整Android推送Demo [附件下載]_b.png

點擊“Start Push Service”按鈕即可開啟推送服務,這時我們可以看到rsmb的服務日志中打出以下提示:
20120823 113742.297 CWNAN0033I Connection attempt to listener 1883 received from client tokudu/9774d56d682e549c on address 192.168.28.39:3345

其中的“9774d56d682e549c”就是對應的客戶端ID號。

發送服務準備


  • 下載&解壓PHP版的發送服務端代碼send_mqtt.zip(下載地址:請見文末附件
  • 修改etc/config.php中推送服務端的IP地址和端口號,即MQTT_SERVER_HOST和MQTT_SERVER_POST常量。
  • 打開對應的URL地址,就可以看到發送服務的界面,實際上就是向對應的推送客戶端推送消息。

一個基于MQTT通信協議的完整Android推送Demo [附件下載]_c.png

接著,我們在該界面中填入客戶端ID(9774d56d682e549c)和推送消息(test)并點擊“Send Push Message”按鈕,服務端就可以向客戶端推送消息了。我們看到,客戶端上立馬就可以收到剛剛推送的消息,如下圖:

一個基于MQTT通信協議的完整Android推送Demo [附件下載]_d.png

結語


當然,以上方案還存在許多的不足,比如,如果客戶端沒有保持連接,發送的消息就會被丟棄。不過,我們可以利用MQTT協議開發出更強大的服務端來替代rsmb,更可以加入隊列、緩存等功能進行優化,有興趣的朋友不妨試試。可參考開源項目Mosquitto(http://mosquitto.org/)。

源碼下載


MQTT服務-rsmb_1.2.0(52im.net).zip (1.02 MB , 下載次數: 83 , 售價: 2 金幣)
AndroidPushNotificationsDemo(52im.net).zip (66.69 KB , 下載次數: 107 , 售價: 2 金幣)
PHP發送端-send_mqtt(52im.net).zip (52.64 KB , 下載次數: 68 , 售價: 2 金幣)

附錄1:全站精品資源下載


[1] 精品源碼下載:
輕量級即時通訊框架MobileIMSDK的iOS源碼(開源版)[附件下載]
開源IM工程“蘑菇街TeamTalk”2015年5月前未刪減版完整代碼 [附件下載]
微信本地數據庫破解版(含iOS、Android),僅供學習研究 [附件下載]
NIO框架入門(四):Android與MINA2、Netty4的跨平臺UDP雙向通信實戰 [附件下載]
NIO框架入門(三):iOS與MINA2、Netty4的跨平臺UDP雙向通信實戰 [附件下載]
NIO框架入門(二):服務端基于MINA2的UDP雙向通信Demo演示 [附件下載]
NIO框架入門(一):服務端基于Netty4的UDP雙向通信Demo演示 [附件下載]
用于IM中圖片壓縮的Android工具類源碼,效果可媲美微信 [附件下載]
高仿Android版手機QQ可拖拽未讀數小氣泡源碼 [附件下載]
一個WebSocket實時聊天室Demo:基于node.js+socket.io [附件下載]
Android聊天界面源碼:實現了聊天氣泡、表情圖標(可翻頁) [附件下載]
高仿Android版手機QQ首頁側滑菜單源碼 [附件下載]
開源libco庫:單機千萬連接、支撐微信8億用戶的后臺框架基石 [源碼下載]
分享java AMR音頻文件合并源碼,全網最全
微信團隊原創Android資源混淆工具:AndResGuard [有源碼]
一個基于MQTT通信協議的完整Android推送Demo [附件下載]
Android版高仿微信聊天界面源碼 [附件下載]

[2] 精品文檔和工具下載:
計算機網絡通訊協議關系圖(中文珍藏版)[附件下載]
史上最全即時通訊軟件簡史(精編大圖版)[附件下載]
基于RTMP協議的流媒體技術的原理與應用(技術論文)[附件下載]
獨家發布《TCP/IP詳解 卷1:協議》CHM版 [附件下載]
良心分享:WebRTC 零基礎開發者教程(中文)[附件下載]
MQTT協議手冊(中文翻譯版)[附件下載]
經典書籍《UNIX網絡編程》最全下載(卷1+卷2、中文版+英文版)[附件下載]
音視頻開發理論入門書籍之《視頻技術手冊(第5版)》[附件下載]
國際電聯H.264視頻編碼標準官方技術手冊(中文版)[附件下載]
Apache MINA2.0 開發指南(中文版)[附件下載]
網絡通訊數據抓包和分析工具 Wireshark 使用教程(中文) [附件下載]
最新收集NAT穿越(p2p打洞)免費STUN服務器列表 [附件下載]
高性能網絡編程經典:《The C10K problem(英文)》[附件下載]
即時通訊系統的原理、技術和應用(技術論文)[附件下載]
技術論文:微信對網絡影響的技術試驗及分析[附件下載]
華為內部3G網絡資料: WCDMA系統原理培訓手冊[附件下載]
網絡測試:Android版多路ping命令工具EnterprisePing[附件下載]
Android反編譯利器APKDB:沒有美工的日子里繼續堅強的擼
一款用于P2P開發的NAT類型檢測工具 [附件下載]
兩款增強型Ping工具:持續統計、圖形化展式網絡狀況 [附件下載]

[3] 精選視頻、演講PPT下載:
QQ空間移動端10億級視頻播放技術優化揭秘(視頻+PPT)[附件下載]
RTC實時互聯網2017年度大會精選演講PPT [附件下載]
微信分享開源IM網絡層組件庫Mars的技術實現(視頻+PPT)[附件下載]
微服務理念在微信海量用戶后臺架構中的實踐(視頻+PPT)[附件下載]
移動端IM開發和構建中的技術難點實踐分享(視頻+PPT)[附件下載]
網易云信的高品質即時通訊技術實踐之路(視頻+PPT)[附件下載]
騰訊音視頻實驗室:直面音視頻質量評估之痛(視頻+PPT)[附件下載]
騰訊QQ1.4億在線用戶的技術挑戰和架構演進之路PPT[附件下載]
微信朋友圈海量技術之道PPT[附件下載]
手機淘寶消息推送系統的架構與實踐(音頻+PPT)[附件下載]
如何進行實時音視頻的質量評估與監控(視頻+PPT)[附件下載]
Go語言構建高并發消息推送系統實踐PPT(來自360公司)[附件下載]
網易IM云千萬級并發消息處理能力的架構設計與實踐PPT [附件下載]
手機QQ的海量用戶移動化實踐分享(視頻+PPT)[附件下載]
釘釘——基于IM技術的新一代企業OA平臺的技術挑戰(視頻+PPT)[附件下載]
微信技術總監談架構:微信之道——大道至簡(PPT講稿)[附件下載]
Netty的架構剖析及應用案例介紹(視頻+PPT)[附件下載]
聲網架構師談實時音視頻云的實現難點(視頻采訪)
滴滴打車架構演變及應用實踐(PPT講稿)[附件下載]
微信海量用戶背后的后臺系統存儲架構(視頻+PPT)[附件下載]
在線音視頻直播室服務端架構最佳實踐(視頻+PPT)[附件下載]
從0到1:萬人在線的實時音視頻直播技術實踐分享(視頻+PPT)[附件下載]
微信移動端應對弱網絡情況的探索和實踐PPT[附件下載]
Android版微信從300KB到30MB的技術演進(PPT講稿)[附件下載]

附錄2:全站即時通訊技術資料分類


[1] 網絡編程基礎資料:
TCP/IP詳解 - 第11章·UDP:用戶數據報協議
TCP/IP詳解 - 第17章·TCP:傳輸控制協議
TCP/IP詳解 - 第18章·TCP連接的建立與終止
TCP/IP詳解 - 第21章·TCP的超時與重傳
理論經典:TCP協議的3次握手與4次揮手過程詳解
理論聯系實際:Wireshark抓包分析TCP 3次握手、4次揮手過程
計算機網絡通訊協議關系圖(中文珍藏版)
NAT詳解:基本原理、穿越技術(P2P打洞)、端口老化等
UDP中一個包的大小最大能多大?
Java新一代網絡編程模型AIO原理及Linux系統AIO介紹
NIO框架入門(三):iOS與MINA2、Netty4的跨平臺UDP雙向通信實戰
NIO框架入門(四):Android與MINA2、Netty4的跨平臺UDP雙向通信實戰
>> 更多同類文章 ……

[2] 有關IM/推送的通信格式、協議的選擇:
為什么QQ用的是UDP協議而不是TCP協議?
移動端即時通訊協議選擇:UDP還是TCP?
如何選擇即時通訊應用的數據傳輸格式
強列建議將Protobuf作為你的即時通訊應用數據傳輸格式
移動端IM開發需要面對的技術問題(含通信協議選擇)
簡述移動端IM開發的那些坑:架構設計、通信協議和客戶端
理論聯系實際:一套典型的IM通信協議設計詳解
58到家實時消息系統的協議設計等技術實踐分享
>> 更多同類文章 ……

[3] 有關IM/推送的心跳保活處理:
Android進程保活詳解:一篇文章解決你的所有疑問
Android端消息推送總結:實現原理、心跳保活、遇到的問題等
為何基于TCP協議的移動端IM仍然需要心跳保活機制?
微信團隊原創分享:Android版微信后臺保活實戰分享(進程保活篇)
微信團隊原創分享:Android版微信后臺保活實戰分享(網絡保活篇)
移動端IM實踐:實現Android版微信的智能心跳機制
移動端IM實踐:WhatsApp、Line、微信的心跳策略分析
>> 更多同類文章 ……

[4] 有關WEB端即時通訊開發:
新手入門貼:史上最全Web端即時通訊技術原理詳解
Web端即時通訊技術盤點:短輪詢、Comet、Websocket、SSE
SSE技術詳解:一種全新的HTML5服務器推送事件技術
Comet技術詳解:基于HTTP長連接的Web端實時通信技術
WebSocket詳解(一):初步認識WebSocket技術
socket.io實現消息推送的一點實踐及思路
>> 更多同類文章 ……

[5] 有關IM架構設計:
淺談IM系統的架構設計
簡述移動端IM開發的那些坑:架構設計、通信協議和客戶端
一套原創分布式即時通訊(IM)系統理論架構方案
從零到卓越:京東客服即時通訊系統的技術架構演進歷程
蘑菇街即時通訊/IM服務器開發之架構選擇
騰訊QQ1.4億在線用戶的技術挑戰和架構演進之路PPT
微信技術總監談架構:微信之道——大道至簡(演講全文)
如何解讀《微信技術總監談架構:微信之道——大道至簡》
快速裂變:見證微信強大后臺架構從0到1的演進歷程(一)
17年的實踐:騰訊海量產品的技術方法論
>> 更多同類文章 ……

[6] 有關IM安全的文章:
即時通訊安全篇(一):正確地理解和使用Android端加密算法
即時通訊安全篇(二):探討組合加密算法在IM中的應用
即時通訊安全篇(三):常用加解密算法與通訊安全講解
即時通訊安全篇(四):實例分析Android中密鑰硬編碼的風險
傳輸層安全協議SSL/TLS的Java平臺實現簡介和Demo演示
理論聯系實際:一套典型的IM通信協議設計詳解(含安全層設計)
微信新一代通信安全解決方案:基于TLS1.3的MMTLS詳解
來自阿里OpenIM:打造安全可靠即時通訊服務的技術實踐分享
>> 更多同類文章 ……

[7] 有關實時音視頻開發:
即時通訊音視頻開發(一):視頻編解碼之理論概述
即時通訊音視頻開發(二):視頻編解碼之數字視頻介紹
即時通訊音視頻開發(三):視頻編解碼之編碼基礎
即時通訊音視頻開發(四):視頻編解碼之預測技術介紹
即時通訊音視頻開發(五):認識主流視頻編碼技術H.264
即時通訊音視頻開發(六):如何開始音頻編解碼技術的學習
即時通訊音視頻開發(七):音頻基礎及編碼原理入門
即時通訊音視頻開發(八):常見的實時語音通訊編碼標準
即時通訊音視頻開發(九):實時語音通訊的回音及回音消除概述
即時通訊音視頻開發(十):實時語音通訊的回音消除技術詳解
即時通訊音視頻開發(十一):實時語音通訊丟包補償技術詳解
即時通訊音視頻開發(十二):多人實時音視頻聊天架構探討
即時通訊音視頻開發(十三):實時視頻編碼H.264的特點與優勢
即時通訊音視頻開發(十四):實時音視頻數據傳輸協議介紹
即時通訊音視頻開發(十五):聊聊P2P與實時音視頻的應用情況
即時通訊音視頻開發(十六):移動端實時音視頻開發的幾個建議
即時通訊音視頻開發(十七):視頻編碼H.264、V8的前世今生
簡述開源實時音視頻技術WebRTC的優缺點
良心分享:WebRTC 零基礎開發者教程(中文)
>> 更多同類文章 ……

[8] IM開發綜合文章:
移動端IM開發需要面對的技術問題
開發IM是自己設計協議用字節流好還是字符流好?
請問有人知道語音留言聊天的主流實現方式嗎?
IM系統中如何保證消息的可靠投遞(即QoS機制)
談談移動端 IM 開發中登錄請求的優化
完全自已開發的IM該如何設計“失敗重試”機制?
微信對網絡影響的技術試驗及分析(論文全文)
即時通訊系統的原理、技術和應用(技術論文)
開源IM工程“蘑菇街TeamTalk”的現狀:一場有始無終的開源秀
>> 更多同類文章 ……

[9] 開源移動端IM技術框架資料:
開源移動端IM技術框架MobileIMSDK:快速入門
開源移動端IM技術框架MobileIMSDK:常見問題解答
開源移動端IM技術框架MobileIMSDK:壓力測試報告
開源移動端IM技術框架MobileIMSDK:Android版Demo使用幫助
開源移動端IM技術框架MobileIMSDK:Java版Demo使用幫助
開源移動端IM技術框架MobileIMSDK:iOS版Demo使用幫助
開源移動端IM技術框架MobileIMSDK:Android客戶端開發指南
開源移動端IM技術框架MobileIMSDK:Java客戶端開發指南
開源移動端IM技術框架MobileIMSDK:iOS客戶端開發指南
開源移動端IM技術框架MobileIMSDK:Server端開發指南
>> 更多同類文章 ……

[10] 有關推送技術的文章:
iOS的推送服務APNs詳解:設計思路、技術原理及缺陷等
Android端消息推送總結:實現原理、心跳保活、遇到的問題等
掃盲貼:認識MQTT通信協議
一個基于MQTT通信協議的完整Android推送Demo
求教android消息推送:GCM、XMPP、MQTT三種方案的優劣
移動端實時消息推送技術淺析
掃盲貼:淺談iOS和Android后臺實時消息推送的原理和區別
絕對干貨:基于Netty實現海量接入的推送服務技術要點
移動端IM實踐:谷歌消息推送服務(GCM)研究(來自微信)
為何微信、QQ這樣的IM工具不使用GCM服務推送消息?
>> 更多同類文章 ……

[11] 更多即時通訊技術好文分類:
http://www.uktmgv.tw/forum.php?mod=collection&op=all

即時通訊網 - 即時通訊開發者社區! 來源: - 即時通訊開發者社區!

上一篇:滴滴打車架構演變及應用實踐(PPT講稿) [附件下載]下一篇:輕量級即時通訊框架MobileIMSDK的iOS源碼(開源版)[附件下載]

本帖已收錄至以下技術專輯

推薦方案
評論 16
學習了!謝謝!
收藏了
收藏了 很需要這種資料。
簽名: 啦啦啦啦啦啦
這個demo為什么點了start push service會閃退呢
引用:yy695575613 發表于 2018-04-16 15:09
這個demo為什么點了start push service會閃退呢

這個android demo比較老了,你可以把android下的logcat抓到日志貼出來看看是什么問題。估計你的手機是新版android
簽名: 《盤點移動互聯網時代的社交產品進化史(下篇):大浪淘沙》http://www.uktmgv.tw/thread-2724-1-1.html
引用:JackJiang 發表于 2018-04-16 15:14
這個android demo比較老了,你可以把android下的logcat抓到日志貼出來看看是什么問題。估計你的手機是新 ...

04-16 03:26:29.623: E/AndroidRuntime(1190): FATAL EXCEPTION: main
04-16 03:26:29.623: E/AndroidRuntime(1190): Process: com.tokudu.demo, PID: 1190
04-16 03:26:29.623: E/AndroidRuntime(1190): java.lang.VerifyError: com/tokudu/demo/PushService
04-16 03:26:29.623: E/AndroidRuntime(1190):         at com.tokudu.demo.PushActivity$1.onClick(PushActivity.java:32)
04-16 03:26:29.623: E/AndroidRuntime(1190):         at android.view.View.performClick(View.java:4438)
04-16 03:26:29.623: E/AndroidRuntime(1190):         at android.view.View$PerformClick.run(View.java:18422)
04-16 03:26:29.623: E/AndroidRuntime(1190):         at android.os.Handler.handleCallback(Handler.java:733)
04-16 03:26:29.623: E/AndroidRuntime(1190):         at android.os.Handler.dispatchMessage(Handler.java:95)
04-16 03:26:29.623: E/AndroidRuntime(1190):         at android.os.Looper.loop(Looper.java:136)
04-16 03:26:29.623: E/AndroidRuntime(1190):         at android.app.ActivityThread.main(ActivityThread.java:5017)
04-16 03:26:29.623: E/AndroidRuntime(1190):         at java.lang.reflect.Method.invokeNative(Native Method)
04-16 03:26:29.623: E/AndroidRuntime(1190):         at java.lang.reflect.Method.invoke(Method.java:515)
04-16 03:26:29.623: E/AndroidRuntime(1190):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-16 03:26:29.623: E/AndroidRuntime(1190):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-16 03:26:29.623: E/AndroidRuntime(1190):         at dalvik.system.NativeStart.main(Native Method)
引用:yy695575613 發表于 2018-04-16 16:45
04-16 03:26:29.623: E/AndroidRuntime(1190): FATAL EXCEPTION: main
04-16 03:26:29.623: E/AndroidRu ...

你百度一下“java.lang.VerifyError”
簽名: 《盤點移動互聯網時代的社交產品進化史(下篇):大浪淘沙》http://www.uktmgv.tw/thread-2724-1-1.html
樓主,這個可以實現定時用PHP獲取Oracle數據庫數據,然后進行推送嗎
引用:Singer 發表于 2018-04-18 08:03
樓主,這個可以實現定時用PHP獲取Oracle數據庫數據,然后進行推送嗎

理論上可以,你試試看
簽名: 《盤點移動互聯網時代的社交產品進化史(下篇):大浪淘沙》http://www.uktmgv.tw/thread-2724-1-1.html
引用:JackJiang 發表于 2018-04-18 09:24
理論上可以,你試試看

樓主,PHPService端文件需要放在哪個文件夾下
學習學習
學習一下
學習了
簽名: 心情好
贊,簡要的入門總結
簽名: Linux Driver
很好的資源學習了
簽名: 好好好
打賞樓主 ×
使用微信打賞! 使用支付寶打賞!

返回頂部
曾氏料二肖中特