Google Cloud Messaging(GCM) for Android, android平台訊息推送技術(二):GCM推送

來源:互聯網
上載者:User

在上一篇文章我們介紹了建立google API project,得到了你的project ID跟server key。在這篇文章中,我們需要通過這兩個索引值來進行訊息推送。本文例子根據google官方提供的例子改寫,如果需要下載google例子的話,可以去android SDK manager的Extras裡面 下載Google Cloud Messaging for Android Library,然後例子就在android-sdk-windows\extras\google\gcm裡面。

我們先在android程式上面加上向GCM註冊的代碼,然後開啟廣播服務。

MainActivity.java

@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        checkNotNull(SENDER_ID, "SENDER_ID");//SENDID 就是我們在上一章建立Google API Project中得到的project ID        GCMRegistrar.checkDevice(this);        GCMRegistrar.checkManifest(this);        setContentView(R.layout.main);        mDisplay = (TextView) findViewById(R.id.display);        registerReceiver(mHandleMessageReceiver,                new IntentFilter(DISPLAY_MESSAGE_ACTION));        String regId = GCMRegistrar.getRegistrationId(this); //regId 程式向GCM註冊之後得到的裝置ID                        if (regId.equals("")) {//如果是空,則需要向你的API project註冊            GCMRegistrar.register(this, SENDER_ID);            String rid = GCMRegistrar.getRegistrationId(this);            Log.i(TAG, "registering device (regId = " + rid + ")");            GCMRegistrar.setRegisteredOnServer(this, true);        } else {        if(GCMRegistrar.isRegisteredOnServer(this)){        mDisplay.append(regId + "\n");                Log.i(TAG, "registering device (regId = " + regId + ")");        }else{        GCMRegistrar.setRegisteredOnServer(this, true);        }        }    }

然後在接收到訊息之後,讀取資訊。

GCMIntentService.java

@Override    protected void onMessage(Context context, Intent intent) {        Log.i(TAG, "Received message");        String message = "";        try {            String action = intent.getAction();            if (action.equals("com.google.android.c2dm.intent.RECEIVE")) {            message = intent.getStringExtra("msg");            }        } catch(Exception e){        e.printStackTrace();        }             // String message = getString(R.string.gcm_message);        displayMessage(context, message);        // notifies user        generateNotification(context, message);    }

不要忘記在AndroidManifest.xml中增加需要的許可權。

完成之後。就可以把程式安裝到手機上面,開啟手機的網路,程式會自動進行註冊,螢幕上顯示裝置註冊ID。

然後開始寫推送的代碼

GCMSend.java

import com.google.android.gcm.server.Message;import com.google.android.gcm.server.Result;import com.google.android.gcm.server.Sender;public class GCMSend {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubGCMSend send = new GCMSend();send.sendMessage("Hello world");}public void sendMessage(String msg){try{String serverKey = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";//serverkey 就是你在API Project中API Access建立server key之後得到的API KeyString regId = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbb";// 你的裝置中的app向GCM註冊得到的值,  即 GCMRegistrar.getRegistrationId(this);Sender sender = new Sender(serverKey);Message message = new Message.Builder()    .addData("msg", msg)    .build();Result result = sender.send(message, regId, 5);String status = "Sent message to one device: " + result;System.out.println(status);}catch(Exception e){e.printStackTrace();}}}

在電腦上運行這個程式,就可以把訊息(“Hello World”)發送到你的裝置上面了.

代碼下載(請把例子裡面的SEND_ID,serverKey 跟regId改成你的值)

android接收程式

GCM發送程式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.