| 应用在后台或离线时通知 (海外) | 应用在后台或离线时通知 (国内) | 锁屏时通知 (国内) |
| | | |
一、步骤1:厂商配置
uni-app 厂商配置包含 Android 厂商配置 和 iOS 厂商配置, 详细参见 厂商配置 – uniapp。
二、步骤2:下载 Push 插件并导入 HBuilderX
注意:说明:
注意:HBuilderX 4.29 有 bug,请使用 HBuilderX 4.36 或更高版本,并升级 uni-app 腾讯云推送服务(Push)到 1.1.0 或更高版本。
1. 打开 uni-app 腾讯云推送服务(Push),单击下载插件并导入 HBuilderX,将插件导入 HbuilderX 工程中。
2. 选择需要集成的工程并单击确定。
3. 集成后效果如下:
三、步骤3:离线推送配置
注意:说明:
AndroidiOS1. 新建 nativeResources/android/assets 目录。2. 配置 timpush-configs.json(在 推送服务 Push > 接入设置 > 一键式快速配置 下载),到 nativeResources/android/assets/ 目录下。如下:3. 华为、荣耀、vivo、FCM。FCM华为荣耀vivo你需要支持 FCM 推送时,需要配置 google services。1. 配置 com.google.gms.google-services 到 uni_modules/TencentCloud-Push/app-android/config.json 的 project.plugin 中,如下所示:"project": { "plugins": [ … "com.google.gms.google-services" ], "dependencies": [ "com.huawei.agconnect:agcp:1.9.1.301", "com.google.gms:google-services:4.3.15", "com.hihonor.mcs:asplugin:2.0.1.300" ]}2. 配置 google-services.json 文件到 nativeResources/android/ 目录下。如下:你需要支持华为推送时,需要配置agconnect-services.json (此文件获取详见 厂商配置 > uniapp > 华为 > 步骤4:获取应用信息)到 nativeResources/android/assets/ 目录下。如下:1. 编辑 uni_modules/TencentCloud-Push/utssdk/app-android/config.json 的 dependencies,添加 "com.tencent.timpush:honor:8.3.6498"。{ … "dependencies": [ … "com.tencent.timpush:honor:8.3.6498" ]}2. 配置 mcs-services.json 文件到 nativeResources/android (此文件获取详见 厂商配置 > uniapp > 荣耀 > 步骤3.2:进入应用详情, 绑定应用包名,下载 mcs-services.json 文件)目录下。如下:3. 配置 appID 到 nativeResources/android/manifestPlaceholders.json 中的 "HONOR_APPID"。{ "HONOR_APPID": ""}1. 编辑 uni_modules/TencentCloud-Push/utssdk/app-android/config.json 的 dependencies,添加 "com.tencent.timpush:vivo:8.3.6498"。{ … "dependencies": [ … "com.tencent.timpush:vivo:8.3.6498" ]}2. 配置 appID 和 appKey到 nativeResources/android/manifestPlaceholders.json 中的 VIVO_APPKEY 和 VIVO_APPID。{ "VIVO_APPKEY": "", "VIVO_APPID": "",}1. 新建 nativeResources/ios/Resources 目录。2. 在 nativeResources/ios/Resources 中新建 timpush-configs.json 文件。3. 并将在 IM控制台 > 推送服务 Push > 接入设置 获取的证书ID,补充到 timpush-configs.json 文件中。如下所示:{ "businessID":"xxx"}
四、步骤4:引入并注册腾讯云推送服务(Push)
将 SDKAppID 和 appKey 替换为你在 IM 控制台 – 推送服务 Push – 接入设置页面 获取的应用的信息。如下:
// 集成 TencentCloud-Pushimport * as Push from '@/uni_modules/TencentCloud-Push';const SDKAppID = 0; // 你的 SDKAppIDconst appKey = ''; // 客户端密钥const userID = 'xx'; // 你的登录 userIDPush.setRegistrationID(userID, (res) => { console.log('setRegistrationID OK', res);});Push.registerPush(SDKAppID, appKey, (data) => { console.log('registerPush ok', data); Push.getRegistrationID((registrationID) => { console.log('getRegistrationID ok', registrationID); }); }, (errCode, errMsg) => { console.error('registerPush failed', errCode, errMsg); });// 监听通知栏点击事件,获取推送扩展信息Push.addPushListener(Push.EVENT.NOTIFICATION_CLICKED, (res) => { // res 为推送扩展信息 console.log('notification clicked', res);});// 监听在线推送Push.addPushListener(Push.EVENT.MESSAGE_RECEIVED, (res) => { // res 为消息内容 console.log('message received', res);});// 监听在线推送被撤回Push.addPushListener(Push.EVENT.MESSAGE_REVOKED, (res) => { // res 为被撤回的消息 ID console.log('message revoked', res);});
五、步骤5:使用云端证书,生成自定义基座
单击 HBuilderX 的运行 > 运行到手机或模拟器 > 制作自定义调试基座,使用云端证书制作 Android 或 iOS 自定义调试基座。
六、自定义推送内容
在调用 calls 发起通话时,可通过 offlinePushInfo 字段来自定义对端收到推送时的内容。
| | / https://cloud.tencent.com/document/product/647/78763#callsimport { CallEngine } from "@/uni_modules/TencentCloud-Call";const callEngine = new CallEngine();const callParams = { userIDList: ['user1'], callMediaType: 1, callParams: { offlinePushInfo: { title: "test-title", // 修改 title description: "you have a call", // 修改 discription } },};callEngine.calls(callParams); |
七、自定义推送铃声
注意:说明:
八、接收端
AndroidiOS
定制的铃音资源文件,添加到项目 nativeResources/android/res/raw 目录下,如下:
设置私信通道和自定义铃音( OPPO、FCM 需要设置)
注意:说明:
注意:1. uni-app 腾讯云推送服务(Push) ≥ 0.5.0。
注意:2. OPPO、FCM 使用自定义铃音需要先设置私信通道和自定义铃音。
·完成上述步骤后,你可以调用 push.createNotificationChannel 设置 OPPO 、FCM 私信通道和自定义铃音。
·在 App.vue 中设置 OPPO、FCM 私信通道。如下所示:
import * as Push from '@/uni_modules/TencentCloud-Push';Push.createNotificationChannel({ channelID: '', // 自定义 channel 的 ID。OPPO 为控制台配置的 channelID channelName: '自定义channel',// 自定义channel 名称 channelDesc: '这只是描述', // 自定义 channel 描述 channelSound: 'private_ring' // 自定义铃音的名称且不需要后缀名}, () => { console.log('Push | createNotificationChannel ok');})
注意:说明:
定制的铃音资源文件,添加到项目 nativeResources/ios/Resources 目录下,如下:
九、发送端
1. 升级 @tencentcloud/chat 到最新版本。
npm install @tencentcloud/chat@latest
Webuniapp小程序在浏览器控制台查看 TencentCloudChat.VERSION 版本号,来确认 @tencentcloud/chat ≥ 3.3.2 如下:在 HBuilderX 日志中查看 TencentCloudChat.VERSION 版本号,来确认 @tencentcloud/chat ≥ 3.3.2 如下:在小程序开发者工具控制台查看 TencentCloudChat.VERSION 版本号,来确认 @tencentcloud/chat ≥ 3.3.2 如下:
2. 发送消息,设置 offlinePushInfo 自定义铃音的相关参数。
注意:说明:
import { CallEngine } from "@/uni_modules/TencentCloud-Call";const callEngine = new CallEngine();const callParams = { userIDList: ['user1'], callMediaType: 1, // 语音通话(callMediaType = 1)、视频通话(callMediaType = 2) callParams: { offlinePushInfo: { title: "test-title", description: "you have a call", androidSound: 'private_ring', // androidSound 为铃声文件名,不需要后缀名 iOSSound: 'private_ring.mp3', // iOSSound为铃声文件名,需要后缀名 } },};callEngine.calls(callParams);
十、推送结果回调
开启推送服务后,推送结果可以通过配置基础回调的方式,将结果转发给 App 后台,详见:
·普通推送结果回调
·全员推送结果回调
十一、设备通知栏如何设置?
推送的直观表现就是通知栏提示,所以同其他通知一样受设备通知相关设置的影响,以华为为例:
·“手机设置-通知-锁屏通知-隐藏或者不显示通知”,会影响锁屏状态下推送通知显示。
·“手机设置-通知-更多通知设置-状态栏显示通知图标”,会影响状态栏下推送通知的图标显示。
·“手机设置-通知-应用的通知管理-允许通知”,打开关闭会直接影响推送通知显示。
·“手机设置-通知-应用的通知管理-通知铃声” 和 “手机设置-通知-应用的通知管理-静默通知”,会影响推送通知铃音的效果。
十二、厂商推送限制如何设置?
1. 国内厂商都有消息分类机制,不同类型也会有不同的推送策略。如果想要推送及时可靠,需要按照厂商规则设置自己应用的推送类型为高优先级的系统消息类型或者重要消息类型。反之,推送消息会受厂商推送消息分类影响,与预期会有差异。
2. 另外,一些厂商对于应用每天的推送数量也是有限制的,可以在厂商控制台查看应用每日限制的推送数量。 如果推送消息出现推送不及时或者偶尔收不到情况,需要考虑下这里:
华为vivoOPPO小米魅族FCM
将推送消息分为服务与通讯类和资讯营销类,推送效果和策略不同。另外,消息分类还和自分类权益有关:
·无自分类权益,推送消息厂商还会进行二次智能分类 。
·有申请自分类权益,消息分类会按照自定义的分类进行推送。 具体请参见 厂商描述。
将推送消息分为系统消息类和运营消息类,推送效果和策略不同。系统消息类型还会进行厂商的智能分类二次修正,若智能分类识别出不是系统消息,会自动修正为运营消息,如果误判可邮件申请反馈。另外,消息推送也受日推总数量限制,日推送量由应用在厂商订阅数统计决定。 具体请参见 厂商描述1 或 厂商描述2。
将推送消息分为私信消息类和公信消息类,推送效果和策略不同。其中私信消息是针对用户有一定关注度,且希望能及时接收的信息,私信通道权益需要邮件申请。公信通道推送数量有限制。 具体请参见 厂商描述1 或 厂商描述2。
将推送消息分为重要消息类和普通消息类,推送效果和策略不同。其中重要消息类型仅允许即时通信消息、个人关注动态提醒、个人事项提醒、个人订单状态变化、个人财务提醒、个人状态变化、个人资源变化、个人设备提醒这8类消息推送,可以在厂商控制台申请开通。普通消息类型推送数量有限制。 具体请参见 厂商描述1 或 厂商描述2。
推送消息数量有限制。 具体请参见 厂商描述。
推送上行消息频率有限制。 具体请参见 厂商描述。