转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6664293.html

应该是目前为止全网最详细的GCM推送解析。

GCM官方解释: https://developers.google.cn/cloud-messaging/?hl=zh-cn

Send data from your server to your users' devices, and receive messages from devices on the same connection. The GCM service handles all aspects of queueing of messages and delivery to client applications running on target devices, and it is completely free.

中文解释:将数据从服务器发送到用户设备,并从同一连接上的设备接收消息。 GCM服务处理消息排队的所有方面,并将其传递到在目标设备上运行的客户端应用程序,它是完全免费的。

1.申请GCM推送的网址:https://firebase.google.cn/  Google在2016年I/O大会推出的全新服务Firebase

点击 "免费开始使用"(需要科学上网,你懂得)

2.进入到Firebase的使用界面

3.点击 "新建项目"

4.创建好项目之后会出现如下界面

点击 "将Firebase添加到您的Android应用"

5.将包名(package) 和 随便起的应用别名填到下面的横线处,点击"REGISTER APP"

6.点击 "Download google-services.json",把下载下来的.json文件拷贝到Project形式的app文件夹里面。点击"继续"

7.在工程里面添加相应的库

①在工程里面找到 build.gradle(Project:项目名),在dependencies{}里面添加

classpath 'com.google.gms:google-services:3.0.0'

②在工程里面找到 build.gradle(Module:app),在最下面添加

apply plugin: 'com.google.gms.google-services'

点"完成"

8.点击完成之后就会在概览里面看到刚刚创建的项目

9.点击左侧的 "Notifications"

会出现如下界面:

10.点击 "了解详情",进入网页 https://firebase.google.cn/docs/notifications/,网页里面我们会看到 实现 GCM推送的流程

在网页的最下面有Google官方提供的Demo链接地址https://github.com/firebase/quickstart-android/tree/master/messaging/

11.在build.gradle(Module:app)里面添加依赖库(谷歌提供)

compile 'com.google.firebase:firebase-core:10.2.1'
compile 'com.google.firebase:firebase-messaging:10.2.1'
compile 'com.firebase:firebase-jobdispatcher:0.5.2'

12.修改工程代码

①添加三个Service(Demo中给提供了,直接拷贝到项目里)文件到项目里

MyFirebaseInstanceIDService

MyFirebaseMessagingService

MyJobService

②修改AndroidManifest

1)添加联网权限(官方Demo里竟然没提到联网权限,不知道何原因)

<uses-permission android:name="android.permission.INTERNET" />

2)将三个Service添加到配置文件里

13.发送通知

在第9步,点击"发送您的第一条消息",在目标那栏选择 "单个设备",这时候提示我们需要FCM注册令牌,有些人就蒙了,这去哪里找,我们好像从来没设置或者给过这个值。

运行项目(手机要科学上网,否则获取不到FCM注册令牌)

14. FCM注册令牌

在MyFirebaseInstanceIDService里面谷歌已经给我们准备好了FCM注册令牌的获取方式

通过Log日志我的手机打印出来的FCM注册令牌是

cwQxX20HqcE:APA91bGsPdGAPV79EIbwNgY08qbuMw-WBUdtJ0M6ALd-OxwAd0IL5EgnPYJqNfWwdY4Kev0FR5flb2odZlJyrDCnrHWXfbQot3cnBLiL-hqvhrGSb53AxGTpwxN37zSnTt0lAp-ZB-XV

将这个值添加到网页FCM注册令牌的输入框内,点击"发送消息"

网页端显示 已完成

手机通知栏就会有显示(Nexus 6P)

证明GCM推送成功!

关注我的新浪微博,获取更多Android开发资讯!
关注科技评论家,领略科技、创新、教育以及最大化人类智慧与想象力!

GCM(Google Cloud Messaging)推送完全解析的更多相关文章

  1. 使用GCM服务(Google Cloud Messaging)实现Android消息推送

    最近在网上查了关于很多Android消息推送的资料,其中主要有四种方法. 1) 使用GCM服务(Google Cloud Messaging) 2) 使用XMPP协议(Openfire + Spark ...

  2. 使用Google Cloud Messaging (GCM),PHP 开发Android Push Notifications (安卓推送通知)

    什么是GCM? Google Cloud  Messaging (GCM) 是Google提供的一个服务,用来从服务端向安卓设备发送推送通知. GCM分为客户端和服务端开发. 这里我们只介绍服务端开发 ...

  3. 【Android应用开发】 推送原理解析 极光推送使用详解 (零基础精通推送)

    作者 : octopus_truth 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/45046283 推送技术产生场景 : -- ...

  4. Google FireBase - fcm 推送 (Cloud Messaging)

    要将 Firebase 添加到您的应用,您需要有一个 Firebase 项目以及适用于您的应用的 Firebase 配置文件. 如果您还没有 Firebase 项目,请在 Firebase 控制台中创 ...

  5. Android Push Notifications using Google Cloud Messaging (GCM), PHP and MySQL

    http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php- ...

  6. iOS 推送全解析

    本文旨在对 iOS 推送(以下简称 推送)进行一个完整的剖析,如果你之前对推送一无所知,那么在你认真地阅读了全文后必将变成一个推送老手,你将会对其中的各种细节和原理有充分的理解.以下是 pikacod ...

  7. iOS 推送全解析,你不可不知的所有 Tips!

    本文旨在对 iOS 推送进行一个完整的剖析,如果你之前对推送一无所知,那么在你认真地阅读了全文后必将变成一个推送老手,你将会对其中的各种细节和原理有充分的理解.以下是 pikacode 使用 iOS ...

  8. iOS 远程推送消息解析及逻辑处理

    关于远程推送的相关配置网上已经有足够多的教程,这里就不复述了.这里讲述当客户端收到推送消息后,应怎样对其进行相应的逻辑处理. 工程的AppDelegate.m文件里提供了如下方法: //当应用程序启动 ...

  9. iOS 10 推送全解析,注意事项

    本文旨在对 iOS 推送进行一个完整的剖析,如果你之前对推送一无所知,那么在你认真地阅读了全文后必将变成一个推送老手,你将会对其中的各种细节和原理有充分的理解.以下是 pikacode 使用 iOS ...

随机推荐

  1. 给ubuntu安装VNC远程桌面

    (只有背景,没有菜单栏问题没有解决)Virtual Network Computing(VNC)是进行远程桌面控制的一个软件.客户端的键盘输入和鼠标操作通过网络传输到远程服务器,控制服务器的操作.服务 ...

  2. PB程序“无法启动此程序,因为计算机中丢失PBvm90.dll。尝试重新安装该程序以解决此问题”的解决方法

    因为有计算机自考科目,要求使用PB程序做一个管理系统.昨天刚安装好了PB程序,今天使用的时候,当我打开一个PB程序时,出现了"无法启动此程序,因为计算机中丢失PBvm90.dll.尝试重新安 ...

  3. devexpress设置系统全局字体(含工具栏字体)

    1.许多时候,都需要设置系统的字体.devexpress设置字体效果图比较如下: 上图比较可以看出,字体应用到了所有控件. 2.数据绑定代码: DataTable dt = new DataTable ...

  4. 【WC2015】混淆与破解 (Goldreich-Levin 算法)

    这个嘛= =直接贴VFK的题解就行了吧,感觉自己还是差别人太多 http://vfleaking.blog.uoj.ac/blog/104 讲得挺明白了的说,但还是挺难理解的说,中间实现部分简直不要太 ...

  5. react-router 中的history(react中关于后退键的处理用的到)

    react-router 中的history react-router 是建立在history之上的:我们来谈谈这个history吧. github: mjackson/history history ...

  6. Python入门教程(3)

    人生苦短,我学Pyhton Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于199 ...

  7. vue组件最佳实践

    看了老外的一篇关于组件开发的建议(强烈建议阅读英文原版),感觉不错翻译一下加深理解. 这篇文章制定一个统一的规则来开发你的vue程序,以至于达到一下目的. 1.让开发者和开发团队更容易发现一些事情. ...

  8. .NET中的repeater简介及分页效果

    Repeater控件是一个数据绑定容器控件,它能够生成各个项的列表,并可以使用模板定义网页上各个项的布局.当该页运行时,该控件为数据源中的每个项重复此布局.  配合模板使用repeater控件 若要使 ...

  9. 棋盘覆盖(一) ACM

    棋盘覆盖 描述 在一个2k×2k(1<=k<=100)的棋盘中恰有一方格被覆盖,如图1(k=2时),现用一缺角的2×2方格(图2为其中缺右下角的一个),去覆盖2k×2k未被覆盖过的方格,求 ...

  10. html、css、js实现轮播图

    2017-03-13 今天把轮播图的知识1过了一下,写了一个比较简单的轮播图,给大家参考一下. 查看具体的效果点击这个链接 : http://gjhnstxu.me/%E8%BD%AE%E6%92%A ...