Donut 推送插件配置使用

Donut 推送插件配置使用

使用推送插件前,如果需要使用离线推送,首先要完成 AndroidiOS 推送服务的厂商配置,点击后续动作和应用内指定界面使用默认配置即可;如果只需要使用在线推送则无需配置厂商通道。

Android 端配置

配置插件

  1. 在可视化界面添加插件,填写插件 ID 和版本号,勾选启用此插件

插件 ID 为:wx369499c8a9c4c19e

当前版本号为:8.1.107

  1. 设置 Donut 多端 SDK for Android 版本

推送插件需要在主进程运行。所需的 Donut 多端 SDK for Android 最低版本为 1.3.13,推荐使用最新的 SDK

厂商配置

  1. 配置 manifestPlaceholders

Push 插件集成了 vivo、HONOR 推送,需要配置 manifestPlaceholders。

选中 project.miniapp.json 文件,点击右上角按钮转为 json 格式的配置文件。然后在 mini-android 节点下新增配置,填写对应的 manifestPlaceholders

"manifestPlaceholders": {
  "VIVO_APPKEY": "***",
  "VIVO_APPID": "***",
  "HONOR_APPID": "***"
}

如不使用 vivo 和 HONOR 推送,也不能删除此处配置,否则会导致构建失败

使用时将 *** 替换为自己的 APPKEY 和 APPID。

HONOR_APPID、VIVO_APPKEY 和 VIVO_APPID 可从推送控制台获取。

HONOR_APPID 为:

VIVO_APPKEY 和 VIVO_APPID 分别为:

  1. 构建应用时依赖的 Gradle 插件配置:

集成 HUAWEI、HONOR、FCM 推送时要依赖各自的 Gradle 插件。

在工程目录新增 Gradle 插件配置文件push.config.json,跟 project.miniapp.json 文件同文件夹。

在插件配置文件中填入 push.config.json

push.config.json 配置文件如下,可根据实际情况增加/删除 Gradle 插件。例如不需要 FCM,可以删去

project -> dependencies -> com.google.gms:google-services:4.3.15 和 app -> plugins -> com.google.gms.google-services

{
	"project": {
	    "dependencies": [
        "com.huawei.agconnect:agcp:1.6.0.300",
        "com.google.gms:google-services:4.3.15",
        "com.hihonor.mcs:asplugin:2.0.1.300"
	    ]
	},
	"app": {
	   "plugins": [
        "com.huawei.agconnect",
        "com.hihonor.mcs.asplugin",
        "com.google.gms.google-services"
	   ]
	}
}

  1. 原生应用资源文件配置

可参考 Android 配置原生资源

推送需要的原生应用资源分为两类:

  1. 推送服务运行时需要从配置文件读取 appid、appkey、businessID 等信息,需要把 相应的 timpush-configs.json 文件放到 assets 文件夹打包到 apk 中;

timpush-configs.json 文件可以从推送控制台直接下载:

  1. HUAWEI、HONOR、FCM 的 Gradle 插件在构建时,需要读取各自的配置文件,就要把相应的配置文件放在 app 目录下 。

各厂商的配置文件需要分别去厂商的推送控制台下载。

新建目录和文件结构如下:(可参考miniapp.zip)

然后在工程中配置资源文件:

iOS 端配置

厂商配置

请先按照 donut app生成iOS应用需要的 P12证书+描述文件,后续配置时会使用到生成 iOS 证书和 Provisioning Profile 生成应用的 p12 证书 + 描述文件这里特别注意,正常来说到这个阶段,你APP里已经有第一个描述文件了,所以执行这个文档步骤的时候,将已有bundleID作为前缀,拼接.pushservice,用拼接后的字符串作为新的bundleID去生成impushservice.mobileprovision描述文件。如果你是从零开始的项目,完全没有过描述文件的,那就把这个步骤走两遍生成对应文件。Apple Developer 平台 Bundle ID 配置指引 配置时请勾选 Push Notification 、 App Group 等能力 以及 Donut 建议的Access WiFi Information、Associated Domains、Hotspot、Wireless Accessory Configuration 等能力多端应用 Bundle ID 配置 移动应用与多端应用绑定&生成应用的描述文件需要准备的文件如下图: 当您进行完所有的配置后,点击 donut 运行程序时会有提示框引导您使用以下文件。

tuikitdemo_dev.mobileprovision 是您 App 的描述文件

同时在 donut 控制台里绑定移动应用的BundleID 。Donut 开发平台

impushservice.mobileprovision 是您的NSE推送插件描述文件,需要对应project.miniapp.json 的 NSE 文件中对 pushservice 的配置

配置插件

  1. 在可视化界面添加插件,填写插件 ID 和版本号,勾选启用此插件

插件ID:wx369499c8a9c4c19e 版本号:8.1.103

2.在project.miniapp.json 文件中对 pushservice 配置:

内容格式为:project.miniapp.json

  "mini-plugin": {
    "ios": [
      {
        "open": true,
        "pluginId": "wx369499c8a9c4c19e",
        "pluginVersion": "8.1.103",
        "isFromLocal": false,
        "loadWhenStart": true,
        "appexProfiles": {
          "NSE": {
            "enable": true,
            "bundleID": "com.tencent.xxxxxxx.pushservice",
            "profilePath": "impushservice.mobileprovision",
            "distributeProfilePath": "impushservice.mobileprovision"
          }
        },
        "resourcePath": "wx369499c8a9c4c19e.json"
      }
    ]
  }

3.wx369499c8a9c4c19e.json 文件中的配置:

wx369499c8a9c4c19e.json 的内容格式为 wx369499c8a9c4c19e.json

businessID为必传项,请先按照文档上传证书到推送控制台,之后控制台会为您分配此ID。即时通信 IM iOS-推送服务-文档中心-腾讯云TIMPushAppGroupID为可选项,当您需要使用 TPush 组件统计推送抵达率时,推荐您配置,之后按照快速接入进行使用。即时通信 IM iOS-推送服务-文档中心-腾讯云

{
	"TIMPushAppGroupID": "group.com.tencent.xxxxxxxx.xa",
    "businessID":"11111" 
}

  1. 设置 Donut 多端 SDK for iOS 版本

从 iOS SDK >= 1.2.5 开始,支持在 JS 侧监听来自 推送插件的点击事件所需的 Donut 最低版本为 1.2.5,推荐使用最新的 SDK

推送插件使用

  1. 加载插件

调用 wx.miniapp.loadNativePlugin 方法加载插件:

App({
  onLaunch: function () {
    wx.miniapp.loadNativePlugin({
      pluginId: "wx369499c8a9c4c19e",
      success: (plugin) => {
        console.log('load plugin success ', plugin)
      },
      fail: (e) => {
        console.log('load plugin fail', e)
      }
    })
  }
})

  1. 注册事件监听

加载插件成功之后,先注册插件事件监听;后调用插件的 init 方法。用户点击通知栏后,会发送事件,可根据事件内容进行页面跳转。(FCM 推送不支持点击事件通知)

const listener = (param) => {
  console.log('onMiniPluginEvent', JSON.stringify(param))
}

App({
  onLaunch: function () {
    wx.miniapp.loadNativePlugin({
      pluginId: "wx369499c8a9c4c19e",
      success: (plugin) => {
        console.log('load plugin success ', plugin)
        plugin.onMiniPluginEvent(listener)
        plugin.init() // iOS不需要执行这个方法
      },
      fail: (e) => {
        console.log('load plugin fail', e)
      }
    })
  }
})

事件监听数据:

目前只支持点击通知栏事件:

{"data":{"entity":{"action":1,"chatType":1,"content":"哈哈","faceUrl":"https://im.sdk.qcloud.com/download/tuikit-resource/avatar/avatar_26.png","nickname":"Bernie","sendTime":0,"sender":"xlmz","version":1},"timPushFeatures":{"fcmNotificationType":0,"fcmPushType":0}}}

  1. 设置 registrationID (可选,非必要,默认会分配)

registrationID是设备的推送标识 ID,如果您不主动设置它,在调用registerPush方法时系统会为您分配一个默认的标识 ID。请注意,如果您卸载并重新安装应用,标识ID 会发生改变。

如果您希望将标识 ID 与您应用中的特定账号对应起来,您可以主动设置一个标识ID。请确保在调用 registerPush 方法之前设置好标识 ID。

例如,您可以将标识 ID 设置为"99618",通过 restApi 即可向标识 ID 为 “99618” 的设备发送推送。

plugin.setRegistrationID({ registrationID: "99618"}, (ret)=>{
  console.log("setRegistrationID" + ret.errCode + " " + ret.errMsg)
})

回调数据:

成功:{"errCode":0,"errMsg":"success"}

失败:{"errCode":errorCode,"errMsg":"errorMsg"}

  1. 注册 Push

插件加载成功之后,注册推送,注册成功后可接收推送,回调中带有此次注册的推送 token

sdkAppID 和 appKey 可以在推送控制台获取:

plugin.registerPush({ sdkAppID: xxx , appKey: "xxx" }, (ret)=>{
  console.log("registerPush " + ret.errCode + " " + ret.errMsg)
  console.log("registerPush token = " + ret.data.token)
})

回调数据:

成功:{"errCode":0,"errMsg":"success","data":{"token":"OPPO_CN_8ed8e53d92454b29b7ef076d9d4e9834"}}

失败:{"errCode":errorCode,"errMsg":"errorMsg"}

  1. 获取 registrationID

在注册 Push 成功之后,可以获取到 registrationID

plugin.getRegistrationID({}, (ret)=>{
  console.log("getRegistrationID " + ret.errCode + " " + ret.errMsg + " " + ret.data.registrationID)
})

回调数据:

成功: {"errCode":0,"errMsg":"success","data":{"registrationID":"99618"}}

失败:{"errCode":errorCode,"errMsg":"errorMsg"}

  1. 反注册 Push

plugin.unRegisterPush({}, (ret)=>{
  console.log("unRegister " + ret.errCode + " " + ret.errMsg)
})

回调数据:

成功:{"errCode":0,"errMsg":"success"}

失败:{"errCode":errorCode,"errMsg":"errorMsg"}

推送测试

完成上述配置后,要向设备下发推送进行测试。有两个步骤:

  1. 获取 registrationID

a. 加载插件后,直接调用 registerPush 方法注册推送,注册成功后,可通过 getRegistrationID 方法获取到 registrationID。

b. 也可以先通过 setRegistrationID 方法设置自定义的 registrationID,再进行注册。

  1. 用 restApi 发送推送消息

调用 restApi 进行单发推送全员推送 ,成功后,就会收到推送。

在单发推送时,restApi 请求的 To_Account 字段填入上一步获取到的 registrationID。

例如,registrationID 是 "99618",则 restApi 请求 URL 为:

https://console.tim.qq.com/v4/tpush/batch?usersig={admin 用户的userSig}&identifier=admin&sdkappid={您的 sdkAppID}&random=99999999&contenttype=json

(使用时 URL 中大括号及大括号内的内容替换为实际值)

请求包为:

{
  "From_Account": "admin",
  "To_Account": ["99618"], // 数组大小范围在[1,500]之间
  "MsgRandom": 3674128,
  "OfflinePushInfo": {
      "PushFlag": 0,  // 0表示进行离线推送,1表示不进行离线推送
      "Title": "离线推送标题",
      "Desc": "离线推送内容",
      "Ext":"点击事件通知数据" // 可选
  }
}

常见问题

  1. 插件配置之后,调用 wx.miniapp.loadNativePlugin 方法,报错:load plugin fail

首先请检查配置的插件 ID 前后有没有空格,再检查版本号是否正确。

  1. 更新了插件,但是构建时还是用的原来的基座 apk,插件的修改没生效

清除缓存没用,需要修改 project.miniapp.json 文件才能重新构建远程基座 apk,改一下应用的 version code 再进行构建即可。

  1. Android targetSdkVersion 设置为 33 后接收不到推送

推送插件暂时不支持申请 POST_NOTIFICATIONS 权限。请将 targetSdkVersion 设置为 <33 或者在应用中自行申请通知权限。

原文:企业微信文档

仅是为了记录学习之用,如有侵权,请联系删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值