2012年9月7日 星期五

[Android] GCM可以怎麼用?

GCM的前身就是所謂的C2DM, 最早在今年Google I/O時聽到C2DM將進化到GCM時, 就在想, 一定要架個server才可以利用GCM嗎?

其實是可以不用的

從API console可知, 是可以設定允許從任意IP傳送的

再來看看一般的流程:
1. Regster:
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
  GCMRegistrar.register(this, SENDER_ID);
} else {
  Log.v(TAG, "Already registered");
}
2. 取得Registration ID後將ID送至Server
3. Server之後可以用這ID送訊息給這一支手機

由"2"看來, 其實Registration ID是關鍵, 而不是Server, 任何人只要有Registration ID, 就可以傳送訊息給這隻手機了

做了個小小實驗, 寫了一支Activity同時具備了收訊息以及傳送(給自己)的能力:

https://github.com/julianshen/GCMTest

想到的應用: 兩隻手機透過條碼或藍牙交換Registration ID, 就可以透過GCM互傳訊息了

缺點: Registration ID如果有變(GCM是有可能更換ID), 就失效了