生活随笔
收集整理的這篇文章主要介紹了
androidpn的一次亲密接触(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡單看了一下源碼的實現,這里貼一點個人覺得比叫重要的代碼。
?
XmppManager.java
Java代碼
??
public?XmppManager(NotificationService?notificationService)?? ?
?在這里主要是從共享引用中取得xmpp服務器地址和端口號、用戶名和密碼。
?
Java代碼
??
private?class?ConnectTask?implements?Runnable?? ?
?這個內部類主要實現的是連接服務器的操作。通過connection.connect();實現連接服務器。通過如下語句實現發送連接消息。
?
Java代碼
??
ProviderManager.getInstance().addIQProvider("notification",??????????????????????????????"androidpn:iq:notification",??????????????????????????????new?NotificationIQProvider());?? ?最后通過xmppManager.runTask();執行任務隊列中的任務。
?
Java代碼
??
private?class?RegisterTask?implements?Runnable?? 這個內部類主要實現的是在服務器上注冊用戶的操作。如果沒有注冊,隨即生成用戶名和密碼注冊到服務器上。同樣通過connection.sendPacket(registration);發送消息實現注冊功能。
Java代碼
??
private?class?LoginTask?implements?Runnable?? 這個內部類主要實現的是用戶的登錄操作。通過注冊到服務器上的用戶名和密碼登錄到服務器上。最后通過connection.addPacketListener(packetListener, packetFilter);實現消息的監聽。最后一樣通過xmppManager.runTask();在消息隊列中執行任務(執行這個線程)。這個類就是實現服務器推動的主要類。 上述為客戶端的實現。總的來說客戶端仍然是通過xmpp協議實現消息的傳輸。值得注意的是在NotificationService這個類中(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);方法取得了系統的消息的相關服務。主要為類是取得設備的ID,但我在源碼中沒有看到使用這個設備ID的地方。很是不解,看來還是需要繼續深入的研究。 哈哈。到現在為止,總共完成了對openfire開發環境、openfire插件的制作、smack和openfire通信、androidpn的部署方式以及androidpn的使用方法的研究調研工作。對這些方面都是停留在皮毛,希望以后可以通過實際應用可以學到更加深層次的東西。對了,聽一位業內人士說,xmpp是很復雜的,希望以后我能更加了解一
轉載于:https://www.cnblogs.com/zmissm/archive/2013/05/10/3071552.html
總結
以上是生活随笔為你收集整理的androidpn的一次亲密接触(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。