Android消息推送之GCM方式(一)

  次阅读 作者:智能小宝 来源:互联网 2015-09-28 15:50 我要评论(0)

点击“Create project”按键后,将引导你创建第一个项目。如果之前有创建项目,将不会看到这个提示,你看到的会是一个面板。点击左上角的下拉菜单,选择“Other projects”-"Create",将会引导你创建一个项目,你的浏览器地址将会形如:https://code.google.com/apis/console/#project:812216982441。注意#project:后面的数字812216982441,这将会在后面的GCM服务中作为标识号,用于客户端向谷歌服务器注册。以上是准备工作的第一步。

第二:激活你的GCM服务。

在谷歌Api控制台页面中,选中“Services”项,打开“Google Cloud Messaging for Android”项中的开关并接受协议,激活你账号下的GCM服务。

第三:获得API Key

还是在控制台页面,选中“API Access”。点击“Create New Server Key”,在接下来的界面中直接点“Create”,将会生成一个Api Key,这个Api Key将用来验证发送方。

第四,你的电脑需要具有GCM服务所必须的一些包。这些包可以在Android SDK Manager中下载安装,更新的包名叫Google Cloud Messaging for Android,在Extras展开项中。安装完后,在sdk所在目录\extras\google\gcm中,在这里你会看到gcm的发送、接收等操作使用到的工具类和包都有在这里面。

你可以用eclipse直接import这些项目,并导入里面的几个包,基于这些类文件,我们创建对它们的调用。以上,准备工作已经完毕。下面我们开始讲讲怎么使用。(注:准备工作中,如果安卓设备没有Google Play Services包,还需要另外增加第5步,自己去下载谷歌play的服务包并安装到手机/平板中)

需要注意的是,GMC的方式并没有严格的客户端和服务端的,只要求接收消息的是安卓应用,而发送消息的一方可以是任意程序。可以在你自己搭建的服务器里,可以是同一个安卓应用里,也可以只是一个main函数。不过需要使用到的类和环境就要分别搭建好了。

使用GCMRegistrar和Sender这两个类可以分别实现客户端的注册和发送消息的功能。这两个类就在我们刚才下载的gcm服务包中。(在谷歌play服务包google-play-services.jar包中,有一个GoogleCloudMessaging的类,也可以提供注册客户端和发送消息的方法。不过看了官方文档,和前一种方式差不多。这里先不讲这种方法了。)

以上完成了开始的准备工作。接下来讲代码的实现:

先讲客户端注册服务。首先要在AndroidManifest.xml文件里面添加3个GCM/C2DM的权限和必要的网络访问等权限。完整的文件在后面给出。

然后创建一个名为GCMIntentService的android服务,并且继承GCMBaseIntentService这个抽象类并实现里面的几个方法,记得在配置文件里面要申明service。尤其要注意的是,这个service一定要命名为GCMIntentService,并且放到应用包名下。因为GCM的机制会默认使用到这个服务,并且没有提供可以设置为其它服务代替它的方法。

GCMIntentService类:

[java]

public class GCMIntentService extends GCMBaseIntentService {

public static final String SENDERID = "812216982441";

public GCMIntentService(){

super(SENDERID);

}

@Override

protected void onError(Context arg0, String arg1) {

Log.v("GCMIntentService", "onError错误");

}

@Override

protected void onMessage(Context arg0, Intent arg1) {

Log.v("GCMIntentService", "收到新消息:"+arg1.getStringExtra("mine"));

final String info = arg1.getStringExtra("mine");

Handler handler = new Handler(Looper.getMainLooper());

handler.post(new Runnable() {

@Override

public void run() {

Toast.makeText(getBaseContext(), "收到新消息:"+info, Toast.LENGTH_LONG).show();

}

});

}

@Override

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...