转载请注明出处: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. Unity渲染优化中文翻译(三)——GPU的优化策略

    如果游戏的渲染瓶颈来自于GPU 首要任务就是找出造成GPU瓶颈的因素所在,通常GPU的性能受到像素分辨率的影响,特别是在移动客户端的游戏,但是内存带宽和顶点计算的影响也需要注意.这些因素的影响都需要实 ...

  2. android学习5——画图问题

    重写View中的onDraw函数可以实现画图.代码如下: @Override public void onDraw(Canvas canvas) { Paint paint = new Paint() ...

  3. SVN的具体使用方法介绍(安装以及操作)

    今天由于项目的需要安装了SVN,在这里和大家分享一下SVN安装的详细过程和分享一些资料. (1)首先是客户端的安装. 1)获取客户端安装包. --安装包的获取路径: TortoiseSVN的官方下载地 ...

  4. javascipt : reduce

    $scope.totalPrice = function () { return $scope.addcartProduct.reduce(function (money, product) { re ...

  5. 每天一个linux命令(25)--Linux文件属性详解

    Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令: ls  -lih 2098120 lrwxr ...

  6. 批量删除的PHP

    第一个页面shanchu.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  7. 禁止Linux系统被 ping

    echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf sysctl -p 生效 开启ping功能: 删除 ...

  8. Java日常总结之LinkedList、ArrayList的效率分析

    前言: 在我们平常开发中难免会用到List集合来存储数据,一般都会选择ArrayList和LinkedList,以前只是大致知道ArrayList查询效率高LinkedList插入删除效率高,今天来实 ...

  9. 《深入理解Java虚拟机》学习笔记之工具

    善于利用工具,不仅可以加快我们分析数据,还可以快速定位和解决问题.现在我们就来看看虚拟机性能监控和故障处理工具. 在JDK的bin目录可以看到sun免费送给了我们很多小工具,这些工具虽然小巧但功能强大 ...

  10. [LeetCode]Rotate Image(矩阵旋转)

    48. Rotate Image     Total Accepted: 69437 Total Submissions: 198781 Difficulty: Medium You are give ...