引擎接口

    更新时间:

    该文档为快应用开发者提供订阅消息相关的接口以及说明

    日期 说明
    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 的技术支持