推送服务(HMS Core)快速入门
推送服务(Push Kit)是华为提供的消息推送平台,建立了从云端到终端的消息推送通道。您通过集成推送服务,可以向客户端应用实时推送消息,构筑良好的用户关系,提升用户的感知度和活跃度。
推送服务现支持如下接入形态:
Android:推送服务Android SDK为您的Android应用开发提供推送消息相关的接口,适用于手机和平板。主要包含根据多种受众用户推送通知栏和透传消息,自定义通知栏消息样式,主题订阅等功能。
HarmonyOS(Java):推送服务HarmonyOS Java SDK为您的HarmonyOS应用开发提供推送消息相关的接口,适用于华为手机和平板。主要功能为根据token推送通知栏和透传消息。
iOS:推送服务iOS SDK为您的iOS应用开发提供推送消息相关的接口,适用于iOS 10及以上的iPhone设备。主要功能为根据token推送通知栏和透传消息。
Web:推送服务为您的Web应用开发提供推送通知栏消息相关接口。
快应用:推送服务为您的华为快应用开发提供推送通知栏消息相关的接口。
REST API:推送服务REST API为您提供HTTPS接口,您可以通过HTTPS形式发起请求,调用推送服务相关能力,适用于上述所有平台。主要包含下行消息、下行消息回执、主题订阅等功能。
支持的设备
SDK | 设备类型 | OS版本 | HMS Core(APK)版本 |
---|---|---|---|
Android | 华为手机和平板 | EMUI 3.0及以上 | 3.0.0及以上 |
非华为手机和平板 | Android 4.4 - 13 | ||
iOS | iPhone | iOS 10及以上 | - |
HarmonyOS(Java) | 华为手机和平板 | HarmonyOS 2.0及以上 | 5.0.0及以上 |
更新说明
当前版本:[3.x] 1.1.2_6.12.0.300
完善内部实现
SDK 升级到 6.12.0.300
[3.x] 0.0.5_6.10.0.300
- 升级SDK版本
一键接入推送服务
开通服务
使用 Cocos Creator 打开需要接入推送服务的项目工程。
点击菜单栏的 面板 -> 服务,打开 服务 面板,在 HUAWEI HMS Core 内选择 推送服务,进入服务详情页。然后点击右上方的 启用 按钮即可开通服务。
参考 配置 AppGallery Connect 文档,完成开发者注册、创建应用、开通服务,完成参数配置和开启 API 步骤。
配置华为参数文件
大部分的华为相关项目都需要用到 agconnect-services.json
配置文件。若有新开通服务等操作,请及时更新该文件。
登录 AppGallery Connect 后台,在 项目列表 -> 应用列表 中找到对应的应用。
在 项目设置 页面的 应用 区域,点击
agconnect-services.json
下载配置文件。agconnect-services.json
文件在下载或者更新完成后,必须手动拷贝 到工程目录的settings
目录下。Cocos Creator v2.4.3 及以上版本,若 发布到 HUAWEI AppGallery Connect,开发者可直接在 构建发布 面板中选取下载或更新后的配置文件,不需要手动拷贝。
Sample 工程
开发者可以通过 Sample 工程快速体验推送服务。
点击分析服务面板中的 Sample 工程 按钮,Clone 或下载 HUAWEI Sample 工程,并在 Cocos Creator 中打开。
参照上文开通分析服务并配置华为参数文件后,可通过 Creator 编辑器菜单栏的 项目 -> 构建发布 打开 构建发布 面板来构建编译工程。Creator v2.4.1 及以上版本,可 发布到 HUAWEI AppGallery Connect,Creator v2.4.1 以下的版本可 发布到 Android 平台。
需要在已安装 HMS Core 服务的华为手机上测试。
Sample 工程运行到手机后,点击首页的 Push 按钮,即可进入功能界面进行测试。
开发指南
获取接入推送服务所需的Token
getToken(appId: string): void;
请勿使用Push Token跟踪标记用户。
应用不要固定判断Push Token长度,因为后续长度可变。
禁止应用频繁申请Token。对于非常驻应用每次启动时获取Token,对于常驻应用严禁定期频繁申请Token,如果一定要周期申请建议周期大于1天。
请注意您在代码中必须同时声明getToken方法和onNewToken方法,确保Push Token成功返回。
参数说明
参数 | 说明 |
---|---|
appId | 应用的 appId |
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.getTokenCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
huawei.hms.push.pushService.getToken(this.appId);
获取接入推送服务所需的Token
getTokenBySubjectId(subjectId: string): void;
参数说明
参数 | 说明 |
---|---|
subjectId | 项目ID |
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.getTokenBySubjectIdCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
huawei.hms.push.pushService.getTokenBySubjectId(this.subjectId);
删除Token
deleteToken (appId: string): void
说明
禁止频繁注销Push Token。
注销Push Token需要HMS Core(APK)的版本不低于3.0.0。
如果您不希望应用接收消息,可以调用turnOffPush方法关闭通知栏消息。
您应用的使用协议和隐私声明必须包含并遵守《华为推送服务使用协议》和《SDK隐私安全说明》。
参数说明
参数 | 说明 |
---|---|
appId | 应用的 appid |
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.deleteTokenCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
huawei.hms.push.pushService.deleteToken(this.appId);
根据项目Id删除Token
deleteTokenBySubjectId(subjectId: string): void;
说明
禁止频繁注销Push Token。
注销Push Token需要HMS Core(APK)的版本不低于3.0.0。
如果您不希望应用接收消息,可以调用turnOffPush方法关闭通知栏消息。
您应用的使用协议和隐私声明必须包含并遵守《华为推送服务使用协议》和《SDK隐私安全说明》。
参数说明
参数 | 说明 |
---|---|
subjectId | 项目ID |
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.deleteTokenBySubjectIdCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
huawei.hms.push.pushService.deleteTokenBySubjectId(this.subjectId);
异步任务打开接收通知栏消息开关
turnOnPush(): void;
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.turnOnPushCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
huawei.hms.push.pushService.turnOnPush();
异步任务关闭接收通知栏消息开关
turnOffPush(): void;
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.turnOffPushPushCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
huawei.hms.push.pushService.turnOffPush();
订阅主题
setTag (tag: string): void
参数说明
参数 | 说明 |
---|---|
tag | (topic)要订阅的主题的名称。必须匹配以下正则表达式:[\u4e00-\u9fa5\w-_.~%]{1,900}。 |
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.setTagCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
huawei.hms.push.pushService.setTag("xxxxxxx");
取消订阅主题
delTag (tag: string): void
参数说明
参数 | 说明 |
---|---|
tag | (topic)要取消订阅的主题的名称。 |
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.delTagCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
huawei.hms.push.pushService.delTag("xxxxxxx");
华为Push服务器通过HTTPS方式调用此接口给您的服务器推送上行消息
sendMessage (params: string): void
参数说明
参数 | 说明 |
---|---|
params | json形式则字符串内容 |
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.sendMessageCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
let params = {
"messageId": "messageId" + Math.ceil(Math.random() * 100000),
"messageType": "mType1",
"collapseKey": "0",
"sendMode": "1",
"receiptMode": "1",
"ttl": "10000",
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
let str = JSON.stringify(params);
huawei.hms.push.pushService.sendMessage(str);
获取AAID
getAAID (): void
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.getAAIDCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
huawei.hms.push.pushService.getAAID();
删除本地生成的AAID与时间戳并同步删除已生成的与本AAID相关的所有Token。
deleteAAID (): void
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.deleteAAIDCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
huawei.hms.push.pushService.deleteAAID()
获取ODID
getOdid (): void
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.getOdidCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
huawei.hms.push.pushService.getOdid();
获取是否启用了自动初始化功能
isAutoInitEnabled (): boolean
示例
let bol = huawei.hms.push.pushService.isAutoInitEnabled();
设置是否自动初始化
setAutoInitEnabled (): void
示例
huawei.hms.push.pushService.setAutoInitEnabled(true);
判断当前终端设备是否支持帐号校验功能
isSupportProfile(): boolean
示例
let bol = huawei.hms.push.pushService.isSupportProfile();
添加当前设备上的用户与应用的关系
addProfile(params: string): void;
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.addProfileCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
let params = {
"type": "CUSTOM_PROFILE",
"profileId": "PROFILE_ID_001"
}
huawei.hms.push.pushService.addProfile(JSON.stringify(params));
清除当前设备上登录的用户与应用的关系
deleteProfile(params: string): void;
示例
huawei.hms.push.pushService.once(huawei.hms.push.API_EVENT_LIST.deleteProfileCallback, (result: huawei.hms.push.ApiCbResult) => {
console.log(result);
}, this)
let params = {
"subjectId": this.subjectId, //可选
"profileId": "PROFILE_ID_001" //必选
}
huawei.hms.push.pushService.deleteProfile(JSON.stringify(params));
其他
详细的功能说明,请参考服务指南。