androidpn-client 常見BUG解決方法

最近有需要做手機推送方面的項目,本人以前沒做過網絡編程也沒做過安卓,所以只能GOOGLE,發現Androidpn用的比較廣泛,但Androidpn還不成熟,存在一些BUG。
目前比較困擾大家的BUG主要有:
1.當服務端連續發送多條通知時,客戶端都是顯示同一條通知內容。
2.服務端重啓,客戶端也需要重啓建立連接。

      由於沒有經驗,有BUG也只能繼續GOOGLE,最終發現http://jclick.iteye.com/blog/1289383 這個TOMCAT版本比較符合項目的需求。在此還是要感謝這位大神,真是造福廣大人民羣衆。在這個版本中主要修復了第二個問題,相信很多朋友都已經看過了這篇BLOG ,但是大神在回覆中寫錯了類名XMPPWriter,所有導致大家並不知道問題是怎麼解決的, 其實是修改了org.androidpn.client.XmppManager,org.jivesoftware.smack.PacketWriter(smack源碼)這2個類,這個將他2個版本的代碼比較一下就可以看出來了,廢話了那麼多,在此說一下大神解決此問題的方法。代碼在
http://phonepush.sinaapp.com/forum.php?mod=viewthread&tid=5&extra=page%3D1篇帖子中已經貼出來了。在org.androidpn.client.XmppManager的LoginTask方法中加了一行代碼getConnection().startKeepAliveThread(xmppManager);跟蹤進去發現是開啓了一個線程發送心跳,當發送失敗時捕獲異常,客戶端每隔一段時間進行重連。
org.jivesoftware.smack.PacketWriter的run方法
Java代碼 
  1. catch (SocketException e) {
  2. Log.e("PacketReader", e.toString());
  3. connection.disconnect();
  4. xmppManager.startReconnectionThread();
  5. catch (IOException e) {
  6. e.printStackTrace();
  7. }
這樣就達到了當與服務端失去連接時,客戶端能夠進行重新連接的效果。後來羣裏有朋友說在LoginTask方法中加入
getConnection().startKeepAliveThread(xmppManager); 編譯就報錯,那是因爲他用的是第一個版本 ,所有請先下載第二個版本,第二個版本帶大神精簡過smack源碼。 其實心跳機制在官方的asmack中就已經存在,並且在建立XmppConnection的時候就已經啓動,但是遺憾的是asmack的開發人員並沒有進行異常之後的重連 

Java代碼 
  1. catch (Exception e) {
  2. // Do nothing
  3. }
所有才出現這個困擾大家的問題。

       然後是第二個問題,我們剛纔下載的這個版本並沒有處理這個BUG,其實很簡單,羣裏的高手經解決,就是將org.androidpn.client.Notifier中的notify方法的

  1. PendingIntent contentIntent = PendingIntent.getActivity(context, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);
複製代碼
改成
  1. PendingIntent contentIntent = PendingIntent.getActivity(context, random.nextInt(),
  2.                     intent, PendingIntent.FLAG_UPDATE_CURRENT);
複製代碼

       好了,這2個問題基本上就解決了,本人也只是在此將前輩們的經驗寫一下,方便大家集中修正BUG。其實在碰到框架BUG時,看看框架的源碼還是有幫助,可能會有很多不解,但我覺得多多少少還是能看出一點東西來。以後大家碰到什麼問題也可以提出來,大家一起研究討論,集思廣益,總比一個人瞎想的強,有什麼好的想法也可以拿出來分享。再次謝謝各位前輩。


原文地址:http://phonepush.sinaapp.com/forum.php?mod=viewthread&tid=6&extra=page%3D1

發佈了18 篇原創文章 · 獲贊 5 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章