简介
本文档提供关于 SDK 接入以及开启推送服务
注意
为了避免您的 App 被监管部门通报或下架,请您在接入 SDK 之前务必按照 Harmony 合规指南 在《隐私政策》中增加移动推送相关说明,并且在用户同意《隐私政策》后再调用移动推送 SDK 接口。
SDK 集成
操作步骤
注意
在配置 SDK 前,确保已创建 Android 平台的应用。
1. 登录 移动推送控制台,在产品管理>配置管理页面获取应用的 AccessID、AccessKey。
2. 在 SDK 下载 页面,获取当前最新版本。
3. 在 App 模块下的 oh-package.json5 文件中添加移动推送鸿蒙 SDK 依赖。
{ "dependencies": { "@ohos/tpns":"file:./libs/tpns.har",//tpns sdk依赖crypto和pako库,如果业务没有应用需要额外添加依赖"@ohos/crypto-js": "^2.0.2", "pako": "^2.1.0" } }
注意:
移动推送 TPNS 鸿蒙 SDK 依赖了 crypto 和 pako 两个三方库,如果您的应用没有使用到这两个库需要您手动引用,如果已引用请忽略。
可执行下面命令引入:
ohpm install @ohos/crypto-js
ohpm i pako
鸿蒙离线通道配置
想要推送功能,需要配置 鸿蒙平台信息。
主要5个步骤为:
1. 在华为开放平台开通推送服务
2. 在华为开放平台获取到 client_id
3. 本地工程配置 client_id
App 模块的 module.json5文件中配置鸿蒙离线推送的 appid, 获取 appid 参考:鸿蒙通道接入指南。
{ "module": { "metadata": [ {// 配置为华为鸿蒙离线推送Client ID "name": "client_id", "value": "您应用的华为鸿蒙离线推送ClientID" //直接替换双引号中的内容 }, ] } }
4. 配置签署
![](https://qcloudimg.tencent-cloud.cn/image/document/e9c6cca6ff174b7adc49449f5741d215.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/e9c6cca6ff174b7adc49449f5741d215.png)
5. 设置公钥指纹
![](https://qcloudimg.tencent-cloud.cn/image/document/a9ad029a4e158d87760821aba7d836bd.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/a9ad029a4e158d87760821aba7d836bd.png)
调试及设备注册
移动推送SDK初始化
创建自定义 AbilityStage,并在应用模块的 module.json5 中配置自定义的 AbilityStage,如果您已有自定义 AbilityStage 可以使用已有的自定义 AbilityStage,
在自定义 AbilityStage 的 onCreate 方法中初始化移动推送 SDK。
//1. 自定义MyAbilityStageexport default class MyAbilityStage extends AbilityStage { process:string = "1233"; onCreate(): void { console.debug("TPush-Demo","MyAbilityStage onCreate"); // 应用的HAP在首次加载的时,为该Module初始化操作 this.init(this.context.getApplicationContext()); } onAcceptWant(want: Want): string { // 仅specified模式下触发 return 'MyAbilityStage'; } onNewProcessRequest(want: Want): string{ return ""; } onMemoryLevel(level: AbilityConstant.MemoryLevel): void{ }init(context: Context) { try { const tpnsClient = TPush.createTPushClient(context, { accessId: 150000xxxx, //您的accessId accessKey: "xxxxxx", //您的accessKey host: "tpns.tencent.com", //创建产品时选择的接入点 debugMode: true //上线后需要设置为false }); } catch (err) { //TODO:: TPush.createTPushClient 传递的必选参数为空或者非法会抛出异常此处要注意处理 console.error("TPush-Demo", "init fail errCode:" + err.code + " data:" + err.data); } } }//2. 在module.json5文件中配置自定义AbilityStage{ "module": {...... "srcEntry": "./ets/MyAbilitystage.ets",...... } }
注意:
debugMode 上线时请设置为 false。
Token 注册
初始化成功移动推送 SDK 后,在需要推送服务的地方调用推送服务注册接口:
调用时机: 请务必确保终端用户有效同意《隐私政策》后再调用移动推送 SDK 业务功能接口。 移动推送相关功能接口调用时机您可在确保合规的前提下视您业务需要选择调用。
this.tpnsClient.registerPush().then((data) => { console.error("TPush-Demo", "registerPush result:" + data); }).catch((err: BusinessError<string>) => { console.error("TPush-Demo", "registerPush fail err:" + JSON.stringify(err)); })
过滤 "TPush" 注册成功的日志如下
TPush-Demo registerPush success token:011aa78bed7bbc21c648f77b7c612dfd7032
配置通知跳转页
通知支持跳转到指定页面
主要步骤为:
要配置 uris,目前主要通过 uri 来匹配页面,推送时 url=${您应用的scheme}://${您应用的host}/${您应用的path}
actions 一定要配置,没有可以配置空字符串。
{ "name": "EntryAbility2", "srcEntry": "./ets/entryability/EntryAbility.ets", "exported": false, "skills": [ {"actions": [ //使用uri时 actions必须要配置,否则点击通知打开uri对应ability失败 "", ], "uris": [ { "scheme": "您应用的scheme", "host": "您应用的host", "path": "您应用的path" } ] },{"actions": [ //actions 一定要配置,没有可以配置为空字符串 "您应用的action", ],} ] }//示例 下面配置,推送时 uri的值填为: tpns://com.tpns.push/notify_detail{ "name": "EntryAbility2", "srcEntry": "./ets/entryability/EntryAbility.ets", "exported": false, "skills": [ {"actions": [ //使用uri时 actions必须要配置,否则点击通知打开uri对应ability失败 "", ], "uris": [ { "scheme": "tpns", //scheme可以替换成业务自己的 "host": "com.tpns.push", //host可以替换成业务自己的 "path": "notify_detail" //path可以替换成业务自己的 } ] },{"actions": [ //actions "actions.tpns.push", //actions可以替换成业务自己的 ],} ] }
隐私协议声明建议
您可在申请 App 权限使用时,使用以下内容声明授权的用途:
我们使用 腾讯云移动推送 TPNS 用于实现产品信息的推送,在您授权我们“访问网络连接”和“访问网络状态”权限后,表示您同意 腾讯 SDK 隐私协议。您可以通过关闭终端设备中的通知选项来拒绝接受此 SDK 推送服务。
其中上述声明授权的两个链接如下:
腾讯云移动推送