Home 主頁 Service 服務計畫 Android App 手機程式 Expertise 專業領域 Blog 博客 Download 下載 FAQ 網頁製作常見問題 Support 支援 Links 友情連結 Contact Us 聯絡我們

Push Notification 推送信息(GCM)

發佈: 10-16-2012

分類: Android 開發教學

本文介紹Google Cloud Messaging (GCM)基本使用方法。不久以前Google發佈了Cloud to Device Messaging (C2DM),以解決Android平台使用Push Notification的問題。最近,C2DM已完成其歷史任務,取而代之的是Google Cloud Messaging (GCM)。GCM沒有配額限制,而且支持multicast,所有新的應用都要使用GCM。

Google Cloud Messaging (GCM)

這次我們探討如何建立一個基於GCM的Android app,並使用php為編寫第三方服務器環境。

我們準備什麼?

  1. Eclipse (Android app編寫)
  2. 可執行PHP的Apache web server (最常見的Web服務器)
  3. PHP加載curl以找取網頁內容
  4. MySql database (不一定要使用)
  5. Google Account (GCM要求電話/模擬器中有google account/請使用可用google api的模擬器/4.1或以上不用連接Google Account)

結構:

  1. Android App
  2. 一個php頁面以執行發送代碼 (第三方server,用來記錄訂閱的設備,以及發送信息)
  3. 一個php頁面把registration ID從app發送到第三方server以訂閱推送信息

方法

第一步:建立新Project,並申請api key

這裡可找到如何開始建立新Project,以及並申請api key http://developer.android.com/guide/google/gcm/gs.html

在建立新project時,你也可以在url上找出一個project的ID(或稱Sender ID),當app使用者要求訂閱該push notification時,便要用到。

注意:

  • 建立key時可以加上ip白名單,以認證要求,防止別人使用你的api key,當然自己也要保密
  • 生成api key後,我們會有兩個key,要使用的是browser key

第二步:用Eclipse建立新project (某些步驟可能要完成第三步才可測試)

按http://developer.android.com/guide/google/gcm/gs.html#libs的步驟,先更新一下SDK,找出gcm.jar,在project中建立名為libs的folder,把gcm.jar剪貼到libs中。

根據http://developer.android.com/guide/google/gcm/gs.html#android-app的指示,編寫AndroidManifest.xml,GCMIntentServuce.java,當然還有project的主要activity。

在你activity中,調用GCMRegistrar.getRegistrationId(context),app可拿到一個registration ID,你可把這registration ID傳到自己的第三方server,方法當然是通過php了,保存registration ID是你的責任,但如何保存是沒有限制的。你可以用file或MySql來保存registration ID。

在activity中按我們上邊找到的Sender ID 執行GCMRegistrar.register(context, senderID)訂閱推送。當發送信息發送時,你要拿出各個registration ID,連用api key和信息一起發到Google便可。

GCMIntentService是擴展GCMBaseIntentService的,你可以在onRegistered(context, registrationID)中把reistrationID傳到第三方服務器,加以保存。在onMessage(context, intent)中加上收到推送時的邏輯(如通過NotificationManager通知用戶)。

第三步:建立第三方服務器 (php頁面發送推送)

php通過curl你可以發送推送要求(json)到https://android.googleapis.com/gcm/send,而授權方式是我們早前找到的api key和IP白名單。先把記錄起來的registration ID拿出來,再連同api key和message執行curl_exec,使 https://android.googleapis.com/gcm/send收到信息。

由於GCM支持multicast,你更可以用時推送到多個registration ID(最多一千個),這樣便可大減少信息的數目(從前c2dm一個推送只可以給一個registration ID,當你發大量相同的信息時,你便要建立很多的信息)。

由於Google沒有指定第三方服務器要怎麼實現,你的大可以使用不同的技術來完成。就是說你也可以使用vb.net或java等你習慣的環境來完成,這也可以是不基於web server,執行速度更快的windows應用程序。

訪客: Copyright ©2011 KF Software House 版權所有 | 網站地圖