Android消息推送之GCM方式(二)
<聲明>
轉(zhuǎn)載請(qǐng)保留本來(lái)源地址:
http://blog.csdn.net/wzg_1987/article/details/9148023
上一節(jié)講了GCM方式實(shí)現(xiàn)前的一些必要準(zhǔn)備工作,和消息接收的實(shí)現(xiàn)。
這一節(jié)我們來(lái)講一下發(fā)送消息的實(shí)現(xiàn)。
上一節(jié)也已經(jīng)講了,GCM方式其實(shí)并不區(qū)分嚴(yán)格的客戶端和服務(wù)端,對(duì)于開發(fā)者來(lái)說(shuō),任何一方都可以是客戶端或者服務(wù)端,只要搭建的環(huán)境滿足兩個(gè)端的要求。也就是說(shuō),對(duì)于用戶來(lái)說(shuō),可以既是發(fā)送方也可以是接收方。這樣,GCM方式也就不只是可以用來(lái)推送廣告了,同樣也可以拿來(lái)做即時(shí)聊天。但限于GCM的種種缺陷,用來(lái)做即時(shí)聊天并不是最好的方式。(對(duì)于消息推送的各種方案對(duì)比和選擇,可以瀏覽我的另一篇博文http://blog.csdn.net/wzg_1987/article/details/9150945)
首先,你需要導(dǎo)入4個(gè)包,如果你已經(jīng)在下載了GCM的服務(wù)包(下載方式見上一篇準(zhǔn)備工作相關(guān)內(nèi)容),在sdk安裝目錄/extrats/google/gcm文件夾下的gcm-server項(xiàng)目中,將lib文件夾里的json-simpleXX.jar,junit.jar,mockito-all-XX.jar和dist文件夾里的gcm-server.jar加到你的項(xiàng)目里。junit那個(gè)可以不用,它是gcm代碼內(nèi)部做單元測(cè)試使用到的。
然后,我們寫一個(gè)main函數(shù)來(lái)執(zhí)行發(fā)送一個(gè)消息:
public static void main(String[] args) {
Sender sender = new Sender(apiKey);
Message message = new Message.Builder().addData("mine", "test2").build();
Result result = null;
try {
result = sender.send(message, deviceRegId, 5);
System.out.println(result.getMessageId());
} catch (IOException e) {
e.printStackTrace();
}
}
其中,apiKey是你在谷歌api控制臺(tái)頁(yè)面生成的一個(gè)字符串(在上一節(jié)有講到),用來(lái)驗(yàn)證消息發(fā)送方的合法性的。
deviceRegId是由客戶端生成。在客戶端完成注冊(cè)后,調(diào)用GCMRegistrar.getRegistrationId()得到,并應(yīng)該發(fā)送給服務(wù)器保存起來(lái)。
就這么簡(jiǎn)單,還可以使用send的其它重載方法,給多個(gè)注冊(cè)id發(fā)送消息。
以上是服務(wù)端發(fā)送消息的簡(jiǎn)單實(shí)現(xiàn)。
客戶端代碼:http://download.csdn.net/detail/wzg_1987/5662225
服務(wù)端代碼:http://download.csdn.net/detail/wzg_1987/5669419
總結(jié)
以上是生活随笔為你收集整理的Android消息推送之GCM方式(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微信内测新玩法:朋友圈加入共同回忆功能
- 下一篇: 分析师称中国黄牛都看好iPhone14: