2014年7月9日 星期三

Android 開發 (五十五) GoogleCloudMessaging

最近在玩Gradle的時候意外發現

GCMRegistrar  Is  Deprecated  



我記得在我剛接觸android時...GCM才剛改版過...如今過了不到一年...他又改版了...

雖然說又改版了,不過使用方式並沒有太大的改變。只是新版的register不能在MAIN_THREAD中執行,必須使用async task去做...

附上簡單的執行片段


        new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... params) {
                String msg;
                try{
                    GoogleCloudMessaging gcm;

                    gcm = GoogleCloudMessaging.getInstance(getApplicationContext());

                    String regid = gcm.register(SENDER_ID);
                    Log.d("Ted","id "+regid);
                    msg = "Device registered, registration ID=" + regid;
                } catch (IOException ex) {
                    msg = "Error :" + ex.getMessage();
                    // If there is an error, don't just keep trying to register.
                    // Require the user to click a button again, or perform
                    // exponential back-off.
                }
                return msg;
            }

            @Override
            protected void onPostExecute(String msg) {

            }
        }.execute(null, null, null);

regid 就是server訊息傳送時所需的token,根據sample code的寫法,只有在第一次執行的時候才會執行register 其他時候都是由sharepreference取得之前的regid (這代表著regid不變?這點我很懷疑)。

其他的使用方式跟以前沒太大的差別,有興趣可以參考 Hello GCM
最後附上 sample code

沒有留言:

張貼留言