androidpn 推送深入

來源:互聯網
上載者:User

我們從Androidpn用戶端程式入口DemoAppActivity開始。DemoAppActivity裡最核心的就是下面這兩句了。

ServiceManager serviceManager =new ServiceManager(this);serviceManager.startService();

開啟ServiceManager類源檔案,可以看到,建構函式完成了將伺服器位址、連接埠等配置資訊寫到Preferences的工作。而startService方法的代碼如下:

  public void startService() {        Thread serviceThread = new Thread(new Runnable() {            @Override            public void run() {                Intent intent = NotificationService.getIntent();                context.startService(intent);            }        });        serviceThread.start();}

可以看到,它啟動了NotificationService這個服務。服務這個東西,多次start並不會產生多個執行個體,並且除非有進程stop它,否則它不會停止。所以第一次應用程式啟動後,這個服務就運行在那裡了,即使退出應用程式,用戶端還可以接收到伺服器端發來的訊息。 

開啟NotificationService類,繼續看代碼。

deviceId =telephonyManager.getDeviceId();

它取得了裝置的ID,但好像並沒有真正使用過它。

然後,

xmppManager = new XmppManager(this);         taskSubmitter.submit(new Runnable() {            public void run() {                NotificationService.this.start();            }        });

現在,馬上就要串連伺服器了。跟蹤一下NotificationService.this.start方法,就可以看到,它依次執行了connect(串連)、register(註冊)、login(登入)三個動作。

 

Connect 就是建立與伺服器端的長串連了。

Register就是用戶端提交使用者名稱密碼註冊。我們找到XmppManager類中的RegisterTask類。它先通過查看手機的Preferences裡有沒有使用者名稱和密碼欄位來判斷使用者是否註冊,如果沒有註冊,它就產生隨機使用者名稱密碼發過去註冊。所以,如果程式運行過一次之後,你還想換個使用者名稱密碼登入是不行的,除非你在更換使用者之前清除掉Preferences裡的使用者名稱密碼兩個屬性值。另外再提一點,伺服器端不支援同一使用者名稱多次註冊的,所以如果你想做帳號多點同時線上的話,要麼改androidpn的伺服器端,要麼自己得動點腦筋。 

最後,登入完成後,當伺服器端發來訊息時,NotificationReceiver 類就該上陣了。你希望收到訊息後做什麼處理,就來修改它的onReceive方法。預設的,它調用Notifier類的notify方法來給出一條通知。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.