应用安装时的 android GCM 注册

Posted

技术标签:

【中文标题】应用安装时的 android GCM 注册【英文标题】:android GCM registration at app installation 【发布时间】:2015-06-05 12:46:09 【问题描述】:

我想在用户安装我的应用后(即启动前)为我的应用注册 GCM 服务。这可能吗?或者有没有可用的黑客攻击。

【问题讨论】:

【参考方案1】:

如果您想遵循标准的 GCM 客户端应用注册流程,您的应用必须启动才能注册,因为应用服务器和客户端应用必须完成客户端/服务器“握手”。

从GCM documentation 中,它指出客户端获取唯一的注册令牌并将其传递给应用服务器,应用服务器存储该令牌并将确认发送回客户端应用.在握手过程中交换的注册令牌与随后用于向客户端发送消息的客户端应用程序实例标识符相同。

所以,如果你的应用没有启动,你就不能将注册令牌传递给应用服务器。对于android,您需要使用Instance ID API到complete the process。

示例代码:

InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
        GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

(注意R.string.gcm_defaultSenderID 是您从 API 控制台获取的项目编号。)

有一个 hack in this post,如果您想在安装应用程序后启动服务。但完成注册过程对您来说可能不是一个好习惯,因为您对this page 中列出的发件人 ID、应用程序 ID 和发件人身份验证令牌进行了硬编码。

【讨论】:

以上是关于应用安装时的 android GCM 注册的主要内容,如果未能解决你的问题,请参考以下文章

卸载应用时 GCM 未取消注册设备

gcm注册id的持久化

GCM/APNS 如何生成注册 ID

GCM 响应是无效的 Android 应用注册 ID

Android 和 iOS gcm instanceID

android中两个应用程序的相同GCM注册ID?