目录

推送

为了规范通知栏消息,提升用户体验,2023年5月19日起,快应用推送消息将全面升级。

服务升级期间,快应用推送能力整体下线,即快应用的推送/通知(即通知栏消息)均无法触达用户,请您暂停使用,给您造成的不便敬请谅解。

本次服务升级预计于2023年四季度完成,完成后我们将会邮件通知您。如您遇到任何问题,请发邮件至developer@huawei.com与我们联系,感谢您的支持。

该功能依赖 Push SDK 提供服务,Push SDK 可能会收集用户的个人数据。请在快应用中使用该功能之前,告知用户将搜集个人数据,并引导用户阅读相应的隐私政策。

本文档仅介绍接口的定义,接口详细的使用顺序和场景,请参见“接入推送服务”。

接口声明

在manifest.json文件的 features属性中增加如下配置。

{"name": "service.push"}

导入模块

在调用接口页面的<script>部分增加如下配置。

import push from '@service.push'

或

var push = require("@service.push")

使用限制

限制条件

说明

适用终端

手机、平板、车机

适用区域

全球

接口定义

接口

描述

push.getProvider(OBJECT)

获取服务提供商。

push.subscribe(OBJECT)

订阅push,后续可以收到push消息。

push.unsubscribe(OBJECT)

取消订阅。

push.on(OBJECT)

添加push事件回调。

push.off(OBJECT)

移除push事件回调,push.on中的callback不会再收到透传内容。

push.requestSubscribeMessage(OBJECT)

调起订阅消息界面,返回用户订阅消息的操作结果。

[h2]push.getProvider(OBJECT)

描述

获取服务提供商。

返回值

字符串,服务提供商的代号,如厂商的英文品牌名称,如果无此服务则返回空字符串。返回空字符串时,请勿调用该服务其他接口,否则将抛出异常。

请务必使用华为快应用加载器调试,使用快应用联盟调试器则始终返回空字符串。

示例代码

push.getProvider();

[h2]push.subscribe(OBJECT)

描述

订阅push,后续可以收到push消息(一般可在应用初始化的地方进行调用。比如在app的onCreate方法中调用)。

OBJECT参数

参数

类型

是否必填

说明

success

function

否

成功回调,返回 regId,用于发送消息。

fail

function

否

失败回调,返回失败原因。

complete

function

否

执行结束后的回调。

示例代码

push.subscribe({
    success: function(data) {
        console.log("push.subscribe succeeded, result data=" + JSON.stringify(data));
    },
    fail: function(data, code) {
        console.log("push.subscribe failed, result data=" + JSON.stringify(data) + ", code=" + code);
    },
    complete: function() {
        console.log("push.subscribe completed");
    }
});

[h2]push.unsubscribe(OBJECT)

描述

取消订阅(一般不建议调用,调用后regId将失效,需要重新订阅获取新的regId)。如果确定不需要再接受消息推送时,请开发者在RPK中调用unsubscribe后,上报自己的业务服务器此regId已经注销,开发者业务服务器推送消息时,排除已注销regId消息的推送。

如果开发者发送大量PUSH消息到无效的regId,将会受到相应的处罚,包括但不限于限速、禁用等。

OBJECT参数

参数

类型

是否必填

说明

success

function

否

成功回调。

fail

function

否

失败回调,返回失败原因。

complete

function

否

执行结束后的回调。

示例代码

push.unsubscribe({
    success: function(data) {
        console.log("push.unsubscribe succeeded, result data=" + JSON.stringify(data));
    },
    fail: function(data, code) {
        console.log("push.unsubscribe failed, result data=" + JSON.stringify(data) + ", code=" + code);
    },
    complete: function() {
        console.log("push.unsubscribe completed");
    }
});

[h2]push.on(OBJECT)

描述

添加push事件回调(透传消息的payload内容可在此回调中收到)。

OBJECT参数

参数

类型

是否必填

说明

callback

function

是

push事件回调处理。

callback返回值:

参数

类型

说明

messageId

string

消息id。

data

string

消息内容payload。

示例代码

push.on({
    callback: function(ret) {
        console.log("received pass through message, ret=" + JSON.stringify(ret));
    }
});

[h2]push.off(OBJECT)

描述

移除push事件回调,push.on中的callback不会再收到透传内容。

示例代码

push.off();

[h2]push.requestSubscribeMessage(OBJECT)(1102+)

描述

调起订阅消息界面,返回用户订阅消息的操作结果。

OBJECT参数

参数

类型

是否必填

说明

templateIdList

Array

是

消息模板id数组,最大不超过3条。重复id会被丢弃。

success

function

否

成功回调。

fail

function

否

失败回调,返回失败原因。

complete

function

否

执行结束后的回调。

success返回值

若用户勾选了“总是保持以上选择,不再询问”后,当您再次使用完全相同的templateIdList调用该接口时,将不会弹窗让用户确认,会直接返回上次用户的订阅结果。

参数

类型

说明

result

object

返回用户订阅结果。

  • acceptOnce:本次同意
  • rejectOnce:本次拒绝
  • acceptAlways:保持同意且不再询问
  • rejectAlways:保持拒绝且不再询问
  • invalid:无效的templateId

示例1: {"100001":"acceptOnce", "100002":"rejectOnce", "200001":"invalid"}

示例2: {"100001":"acceptAlways", "100002":"rejectAlways", "200001":"invalid"}

fail错误码

错误码

值

说明

COMMON_ERROR

200

框架通用错误。

NOT_SUPPORT_SERVICE_COUNTRY

205

服务地不支持。

SERVICE_UNAVIALABLE

203

rpk在push禁用名单内。

PARAMETER_ERROR

202

参数不合法,templateIdList为空或者去重后超过3条。

USER_REJECT

201

订阅弹框点击关闭。

QUICKAPP_IN_BACKGROUND

500

快应用退到后台,导致无法展示订阅弹框。

示例代码

push.requestSubscribeMessage({
  templateIdList: ['example_100001', 'example_100002'],
  success: function (data) {
    console.log('push.requestSubscribeMessage succeeded, result data=' + JSON.stringify(data))
    prompt.showToast({
      message: `subscribe success: ${JSON.stringify(data)}`
    })
  },
  fail: function (data, code) {
    console.log('push.requestSubscribeMessage failed, result data=' + JSON.stringify(data) + ', code=' + code)
    prompt.showToast({
      message: `subscribe fail msg: ${data}, code: ${code}`
    })
  },
  complete: function () {
    console.log('push.requestSubscribeMessage completed')
  }
})

版本更新说明

版本

发布日期

描述

1102

2022-11-14

新增push.requestSubscribeMessage接口,用于调起订阅消息界面,返回用户订阅消息的操作结果。