引擎接口
更新时间:
该文档为快应用开发者提供订阅消息相关的接口以及说明
日期 | 说明 |
---|---|
2021-01-04 | 创建文档 |
2021-03-04 | 个别参数调整 |
2021-03-05 | 更新兼容方案 |
2021-03-06 | 补充 UserId 加密方法 strKey2SecretKey |
2021-03-08 | 补充参数来源 |
2021-04-01 | 补充一个接口 getstate |
2021-04-11 | 补充 manifest.json 中的必要参数 |
2021-05-18 | 补充测试环境与正式环境的切换说明 |
2021-05-19 | 增加 Q&A |
2021-06-08 | 消息类型增加一个值 3:长期服务消息 |
2021-06-10 | 更新订阅参数scene的说明 |
2025-09-18 | 下线APP订阅和H5订阅 |
rpk 订阅
接口声明
{ "name" : "system.vivopush"}
导入模块
import vivopush from '@system.vivopush'
方法说明
是否支持订阅 (重要)
vivopush.getstate()
由于服务消息推送消息的功能依赖于系统其他模块,使用前需要调用本接口方法来判断其他模块的支持情况,如不支持,则无法下发消息通知给用户
参数
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
success | function | Y | 支持时回调 |
fail | function | Y | 不支持时回调 |
示例
vivopush.getstate({
success: () => {
prompt.showToast({
message: '依赖模块支持订阅消息',
})
},
fail: function (code) {
prompt.showToast({
message: '依赖模块不支持订阅消息',
})
}
})
订阅
vivopush.subscribe(OBJECT)
用于订阅消息
参数
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
params | object | Y | 订阅所需要的参数 |
success | function | Y | 订阅成功的回调方法 |
fail | function | Y | 订阅失败的回调方法 |
params 参数说明
参数名 | 类型 | 必填 | 来源 | 说明 |
---|---|---|---|---|
templateIds | Array | Y | 在服务后台申请获取 | 订阅的服务消息模板 id 列表:[‘aaaaaa’, ‘bbbbbb’] |
clientId | String | Y | 开发者在 vivo 开放平台上创建快应用时所得的 clientId | 快应用 id(clientId 不是 appId) |
userId | String | Y | 开发者传入 | 调用方自己维护的用户标识 |
scene | String | Y | 开发者传入 | 场景标识,调用方传递的标识场景的字段(每次订阅的 scene 必须不同,票务类型建议传入订单号,以防止重复) |
type | Number | Y | 每个 templateId 都有一个 type,与 templateId 同时获取 | 消息模板类型,1:服务消息 2:订阅消息 3:长期服务消息 |
subDesc | String | Y | 开发者传入 | 订阅消息的的描述 |
fail 返回错误信息
错误信息 data | 错误码 code | 说明 |
---|---|---|
templateIds is empty | 1001 | 用户没有勾选模板 |
get openId fail | 1002 | 获取 openId 异常 |
checkTemplateId onFailure | 1003 | 网络或服务器异常 |
onResponse data parse exception | 1004 | 服务器返回数据解析异常 |
Not logged in | 1005 | 用户没有登陆 vivo 账号 |
The user cancels by clicking close | 1060 | 用户点击关闭取消订阅 |
The user cancels by clicking on the blank space | 1061 | 用户点击对话框以外取消订阅 |
activity is finish | 1007 | 快应用已销毁 |
checkTemplateId fail... | 1008 | 模板检查失败 |
get account info get net error | 1090 | 获取账号信息时网络异常 |
verifyResult state : 0 | 1091 | vivo 账号失效(重新登陆 vivo 账号可以解决) |
subscribe fail... | 10060 | 重复订阅 |
subscribe fail... | 20000 | 订阅参数错误 |
示例
vivopush.subscribe({
params: {
templateIds:['template_id_001', 'template_id_002'],
clientId:'client_id',
userId:'user_id',
scene:'scene',
type:1,
subDesc:'sub_desc'
},
success: function() {
prompt.showToast({
message: '订阅成功'
})
},
fail: function(data,code) {
prompt.showToast({
message: '订阅失败'
})
}
})
取消订阅
vivopush.unsubscribe(OBJECT)
用于取消订阅
参数
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
params | object | Y | 取消订阅所需要的参数 |
success | function | Y | 订阅成功的回调方法 |
fail | function | Y | 订阅失败的回调方法 |
params 参数说明
参数名 | 类型 | 必填 | 来源 | 说明 |
---|---|---|---|---|
templateIds | Array | Y | 在服务后台申请获取 | 订阅的服务消息模板 id 列表:[‘aaaaaa’, ‘bbbbbb’](必须和订阅时的值一致) |
clientId | String | Y | 开发者在 vivo 开放平台上创建快应用时所得的 clientId | 快应用 id(必须和订阅时的值一致) |
userId | String | Y | 开发者传入 | 调用方自己维护的用户标识(必须和订阅时的值一致) |
scene | String | Y | 开发者传入 | 场景标识,调用方传递的标识场景的字段(每次订阅的 scene 必须不同,票务类型建议传入订单号,以防止重复,必须和订阅时的值一致) |
type | Number | Y | 每个 templateId 都有一个 type,与 templateId 同时获取 | 消息模板类型(必须和订阅时的值一致) |
subDesc | String | Y | 开发者传入 | 订阅消息的的描述(必须和订阅时的值一致) |
fail 返回错误代码
错误原因 | 说明 |
---|---|
unsubscribe fail, code:10040 | 没有订阅或者已经取消了订阅 |
示例
vivopush.unsubscribe({
params: {
templateIds:['template_id_001', 'template_id_002'],
clientId:'client_id',
userId:'user_id',
scene:'scene',
type:1,
subDesc:'sub_desc'
},
success: function() {
prompt.showToast({
message: '取消订阅成功'
})
},
fail: function(data) {
prompt.showToast({
message: '取消订阅成功'
})
}
})
查询订阅关系
vivopush.isRelationExist(OBJECT)
用于查询订阅关系是否已存在
参数
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
params | object | Y | 查询订阅关系所需要的参数 |
success | function | Y | 查询订阅关系成功的回调方法 |
fail | function | Y | 查询订阅关系失败的回调方法 |
params 参数说明
参数名 | 类型 | 必填 | 来源 | 说明 |
---|---|---|---|---|
templateIds | Array | Y | 支持查询多个模板 id | 订阅的服务消息模板 id 列表:[‘aaaaaa’](必须和订阅时的值一致) |
clientId | String | Y | 开发者在 vivo 开放平台上创建快应用时所得的 clientId | 快应用 id(必须和订阅时的值一致) |
userId | String | Y | 开发者传入 | 调用方自己维护的用户标识(必须和订阅时的值一致) |
scene | String | Y | 开发者传入 | 场景标识,调用方传递的标识场景的字段(每次订阅的 scene 必须不同,票务类型建议传入订单号,以防止重复,必须和订阅时的值一致) |
type | Number | Y | 每个 templateId 都有一个 type,与 templateId 同时获取 | 消息模板类型(必须和订阅时的值一致) |
subDesc | String | Y | 开发者传入 | 订阅消息的的描述(必须和订阅时的值一致) |
返回值
参数名 | 说明 |
---|---|
data | 单个模板 ID 时:true:已存在订阅关系;false:不存在订阅关系;多个模板 ID 时:{"aaaaaaa":true,"bbbbbbbb":false} |
示例
vivopush.isRelationExist({
params: {
templateIds:['template_id_001', 'template_id_002'],
clientId:'client_id',
userId:'user_id',
scene:'scene',
type:1,
subDesc:'sub_desc'
},
success: function(data,code) {
prompt.showToast({
message: '查询订阅关系成功' + data
})
},
fail: function(data) {
prompt.showToast({
message: '查询订阅关系失败'
})
}
})
兼容性说明
该接口是 vivo 手机独有的接口,在其他厂商手机上无法使用,考虑到开发者可能会用一个 rpk 发布在多个厂商渠道,或者因其他原因不能升级快应用的最小版本,特增加兼容说明
多厂商兼容
开发者需要发布 rpk 到不同的厂商渠道时,可以统一在 manifest 文件中声明接口,仅声明接口是不会报错的,代码中 import 或者使用时可以根据厂商信息进行判断。
示例如下:
导入时:
import device from '@system.device
let vivopush
try {
vivopush = require("@system.vivopush")
console.log('import ok ')
} catch(e) {
console.log('import fail : ' + e)
}
调用时:
device.getInfo({
success: function(ret) {
//判断厂商信息后调用
if(ret.brand == 'vivo') {
vivopush.subscribe(...)
}
}
})
低版本兼容
支持该接口的引擎版本为 1091 以上,如果开发者不能将最小支持版本提高到 1091,则需要在 import 或者使用时根据运行平台版本来判断
Q&A
1 接口调用报错,比如 import 是报找不到或接口不存在?
检查引擎版本,需要大于等于 1091(内置的引擎版本不够,可以在微信群里要一个最新的);检查调试器运行平台,运行平台要选择“快应用(com.vivo.hybrid)”
2 订阅弹窗拉起后,没有显示模板信息?
检查参数与引擎环境,如果是测试环境的参数,引擎也需要切换到测试环境;同样的,正式环境下的参数,引擎需要切换到正式环境;环境没有问题的话,重新登陆 vivo 账号后再尝试下。
3 收不到通知?
调用 vivopush.getState 进行检查,如果没有返回成功,检查 appId 和 appKey 是否正确,是否安装了联调提供的发送通知的客户端
4 上传日志?
拨号*#*#112##,进入日志管理,打开日志开关,退出后,复现异常,重新拨号进入日志管理,上传日志,然后提取码告知给 vivo 的技术支持