手把手教你使用“谷歌云消息服务(GCM)quot;

2024-06-06 03:32

本文主要是介绍手把手教你使用“谷歌云消息服务(GCM)quot;,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文:

http://android.eoe.cn/topic/summary

GCM结构概述-GCM Architectural Overview

  • 快速预览*

  • 一个状态通知允许应用程序通知用户一个事件但不扰乱他们的当前活动

  • 你可以把一个intent和通知绑定在一起,这样当用户点击通知选项时系统就可以进行初始化

  • 本文内容*


基础-The Basics|基础-The Basics

响应通知-Responding to Notifications|响应通知-Responding to Notifications

管理通知-Managing your Notifications|管理通知-Managing your Notifications

创建通知-Creating a Notification|创建通知-Creating a Notification

更新通知-Updating the notification|更新通知-Updating the notification

添加声音-Adding a sound|添加声音-Adding a sound

添加振动-Adding vibration|添加振动-Adding vibration

添加闪灯-Adding flashing lights|添加闪灯-Adding flashing lights

更多特性-More features|更多特性-More features

自定义通知的布局-Creating a Custom Notification Layout|自定义通知的布局-Creating a Custom Notification Layout

谷歌云消息服务(GCM)是免费提供给用户的,它帮助你把服务端的数据推送到客户端。它可能是一个轻量级的消息,通知有新的数据上传的服务器(例如,朋友上传了一个电影),或者可能是一个包含了4KB的有效载荷数据的消息(所以即时消息应用可以直接消耗消息)。GCM服务处理排队的消息,并传递到目标的Android应用。想知道如何使用GCM,请看Getting Started
下面是谷歌的云消息服务的主要特点:

  • 它允许第三方应用服务器发送邮件到安卓应用。

  • 关于消息的交付和顺序,GCM没有作出保证。

  • Android设备上的应用并不需要一直运行,准备接收消息。当消息到达时,系统将通过Intent broadcast(意图广播)唤醒应用,只要应用程序设置适当的广播接收机和权限。

  • 它不提供任何内置的用户界面或其他对消息数据的处理方法。 GCM的只是简单地把原始数据传递给Android应用程序,而程序会负责如何处理消息数据。例如,应用程序可能会发布通知,显示自定义的用户界面,或静默地同步数据。

  • 它需要可以运行Android2.2或者更高版本而且要装有谷歌商店应用的设备,或者可以运行Android2.2 API的仿真器。然而,你并没有被限制通过谷歌商店来发布程序。

  • 它使用现有的谷歌服务的连接。对于前3.0设备,需要用户在他们的移动设备上设置谷歌帐户。运行Android4.0.4或更高版本的设备是不需要谷歌账户的。

这章节概述了GCM是如何工作的。

此表汇总的GCM涉及的关键术语和概念。它分为这些类别:

    • 组件* -在GCM中发挥作用的物理实体
    • 凭证* -用于GCM不同阶段的ID和令牌,以确保各方已经通过验证和消息将被送往正确的地方。

{|style="border-spacing: 6px; margin: 0px 8px; width: 100%; border:1px solid #cedff2;"
|- style="width:35%; border:1px solid #cedff2; background:#DEE8F1; vertical-align:top;"
| 组件
|

|-
|* 移动设备*
|运行使用GCM的Android应用的设备。它必须是2.2的Android设备并且已经安装了谷歌商店,而且如果版本低于Android4.0.4,必须至少要有一个谷歌账户登录。另外,作为测试,你可以使用运行andoid2.2的仿真器。
|-
|* 第三方应用服务*
|开发人员用以作为实现GCM一部分的应用服务器。第三方服务器通过GCM服务器给设备上的应用发送数据。

|-
|* GCM服务器*
|谷歌服务器从第三方服务器上获取数据,并把他们发送到移动设备上
|}
{|style="border-spacing: 6px; margin: 0px 8px; width: 100%; border:1px solid #cedff2;"
|- style="width:35%; border:1px solid #cedff2; background:#DEE8F1; vertical-align:top;"
| 凭证
|

|-
|* Sender ID*
|从API控制台获取的项目ID,在Getting Started里有描述。Sender ID被用在registration process中来确认安卓应用是否已经被允许发消息给设备。
|-
|* Application ID*
|安卓程序注册Application ID,用来获得消息的。安卓程序是通过manifest中的包名来区分,确认的。这确保该消息是针对正确的Android应用程序。

|-
|* Registration ID*
|由GCM服务器发送给安卓应用,允许应用接收消息。一旦安卓应用拥有了registered ID,就把它发送给第三方应用服务器,服务器用它们来确认哪些设备已经注册了,正准备接收消息。换句话说,registered ID 被绑定在运行在特殊设备上的特殊应用上。

|-
|* 谷歌用户帐号*
|为了GCM的工作,移动设备必须至少包含一个谷歌帐户,如果设备运行比4.0.4的Android版本较低。

|-
|* 消息发送者验证令牌*
|保存在第三方应用服务器上的API key,允许服务器访问谷歌服务(Google services)。API key 存在于消息发送请求的头部信息里。
|}

生命周期-Lifecycle Flow

这里是云到设备的消息中所涉及的主要过程:
Enabling GCM. 运行在移动设备上的应用,注册用来接收消息

Sending a message. 第三方应用服务器给设备发送消息。

Receiving a message. 应用从GCM服务器上接收消息。

  • 启动google云消息服务-Enabling GCM*

下面是当移动设备上的应用去注册来接收消息时发生的事件的序列。

1 第一次应用要使用消息服务时,他会给GCM发送一个注册Intent。

Intentcom.google.android.c2dm.intent.REGISTER包括发送者ID和Android应用程序的ID。

注意:因为应用第一次运行的时候没有呼叫生命周期里的方法,所以用来注册intent被传递给onCreate()方法,但这只限于应用还没有注册的情况下。

2 如果注册成功,GCM会广播一个com.google.android.c2dm.intent.REGISTERIntent,这回给应用一个注册ID。

应用会在以后用到这个ID(例如会在com.google.android.c2dm.intent.REGISTER可能会被多次调用。您的Android应用程序需要能够作出相应的反应。

3 要完成注册,Android应用程序把注册ID发送到应用程序服务器。服务器要把注册ID存储在数据库中。

注册ID一直持续到Android的应用程序显式注销它,或者Google对它进行刷新。

注意:当用户卸载应用程序,它不是自动在GCM上被注销的。时机是在当GCM发消息给设备并且设备反馈应用已经被删除了。在这是,你的服务器设备标记为未注册的。(服务器会收到一个NotRegistered的错误)

要注意的是注册ID要想完全在GCM上被删除要花费几分钟的时间。所以这段时间内,第三方服务器发送一个消息,他会获得一个有效的消息ID,即使消息并没有被发送到设备上。

  • 发送消息-Sending a Message*

对于应用程序服务器将消息发送到一个Android应用程序,下面的事情一定要到位:

  • 应用必须要有一个注册ID,这样允许它在一个特定的设备上来接受消息

  • 第三方服务器已经存储了注册ID

  • API key。这是开发者必须已经在应用服务器上为应用准备好的。(有关的讨论,请参看Role of the 3rd-party Application Server)现在已经准备好给设备发消息了。

下面列出了当应用服务器发消息时会发生的事件序列:

1 应用服务器给GCM发消息

2 Google会给消息排序并存储他们,当设备不在线的时候。

3 当设备在在线的时候,Google会把消息发送给他们。

4 在设备上,系统会使用合适的权限通过Intent广播把消息广播给具体的应用。消息会唤醒那个应该接收消息的应用,所以应用不用一直在准备着接受消息。

5 应用会处理消息。如果应用在做不一般的处理,你可能需要抓取PowerManager.WakeLock并且在服务上做一些处理。Android应用程序可以注销的GCM如果它不再想接收邮件。

  • 接收消息-Receiving a Message*

下面是设备上的应用接收消息时触发的事件序列:

1 系统接收送到的消息并从消息中提取键值对。

2 系统通过com.google.android.c2dm.intent.RECEIVE把键值对信息发送给应用。

3 应用通过com.google.android.c2dm.intent.RECEIVE提取数据,并加以处理。

用户能看见什么-What Does the User See?

当移动设备用户安装包括GCM的Android应用程序,Google Play Store 会通知他们(GCM)-应用包含GCM。他们必须批准应用有这些(GCM的)特性的使用权。

to do

创建清单-Creating the Manifest

每个android应用都必须有AndroidManifest.xml存在于它的根目录。这个文件里面包含很多必要信息。(更多讨论,参考Android Developers Guide)为了使用GCM,这个文件必须包括如下:

  • 使用com.google.android.c2dm.permission.RECEIVE 的权限,这样应用就能注册和接收信息了。

  • 使用android.permission.INTERNET 的权限,这样应用可以发送注册ID到第三方应用服务器了。

  • 使用android.permission.GET_ACCOUNTS的权限,因为GCM需要一个google帐号(这一点在低于Android 4.0.4版本中是必须的)

  • 使用android.permission.GET_ACCOUNTS的权限,这样当消息到来时,应用可以被唤醒。

  • 使用applicationPackage + ".permission.C2D_MESSAGE 的权限,这样可以防止其他应用注册和使用本应用的消息。权限名称必须完全符合这个模式,否则将Android应用程序将不会收到的消息

  • com.google.android.c2dm.intent.REGISTRATION的接收器,而且类别要设置为com.google.android.c2dm.SEND权限,以便只GCM框架可以将消息发送到它。请注意,注册和接收的消息是通过Intens实现的。

  • intent服务用来处理由广播接收器收到的intent

  • 如果GCM的特性对应用起着至关重要的作用,请确定设置* 。这保证应用不会被安装在不适合的设备上。

下面是具体的设置

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<uses-sdk android:minSdkVersion"16"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:name="com.example.gcm.permission.C2D_MESSAGE" 
android:protectionLevel="signature" />
<uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />
<application ...>
<receiver
android:name=".MyBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.example.gcm" />
</intent-filter>
</receiver>
<service android:name=".MyIntentService" />
</application>

这篇关于手把手教你使用“谷歌云消息服务(GCM)quot;的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1034968

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti