huaweiPush

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码供您参考。

概述

huaweiPush模块封装了华为消息推送的SDK,使用此模块可实现接收推送通知和透传消息功能。

开发者使用本模块之前需要先到华为开发者联盟查看接入说明,说明去注册账号,申请应用,添加推送服务

注意:

添加服务时,要注意填写的是SHA256证书指纹,而不是SHA1,需要android开发人员通过命令行或者其他方法获取,且要点击保存证书

模块升级注意

  • 从1.0.7之前版本升级到1.0.7以及以后版本需要重新获取token

##模块使用攻略

  • Android配置示例:
 <meta-data
      name="com.huawei.hms.client.appid"
      value="100006945" />

value是在添加推送服务后得到的App ID

  • intent配置

华为推送对通知的点击有两种后续行为:1、直接打开应用 2、自定义动作;现对自定义动作做如下说明:

(1) 自定义动作需要在config.xml文件中配置intent-filter,示例代码如下:

<intent-filter>
    <action name="android.intent.action.VIEW"/>
    <category name="android.intent.category.DEFAULT"/>
    <data host="com.apicloud.push"
        path="/hwpush_detail"
        scheme="apischeme"/>
</intent-filter>

(2) 完成第一步的操作后,在华为推送后台需要填写一个自定义动作的字符串,格式如下:

intent://{host}/{path}?message=what#Intent;scheme={scheme};launchFlags=0x30000000;end

其中:

  • host 就是第一步配置的intent-filter中的host
  • path 就是第一步配置的intent-filter中的path
  • scheme 就是第一步配置的intent-filter中的scheme
  • message=what 这部分就是自定义的内容了

示例代码

intent://com.apicloud.push/hwpush_detail?message={name:'tim', age:'20'}#Intent;scheme= apischeme;launchFlags=0x30000000;end

(3) 到此配置完成,当点击通知栏后开发者可以监听appintent事件来获取数据

iOS端使用攻略

1、按照 华为官方文档 注册开发者、创建应用、设置数据、制作推送凭证、配置推送。最后,登录[AppGallery Connect] (https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/)网站,点击“我的项目”,在项目列表中找到您的项目,顶部栏选择您的iOS应用,左侧导航栏选择“项目设置 > 常规”,下载“agconnect-services.plist”文件。将下载好的“agconnect-services.plist”文件拷贝到自定义附加模块上传YonBuilder移动开发平台。至此准备工作完毕。下载 huaweiPushAppendix 模块 zip 包并解压,替换其中的agconnect-services.plist并重新压缩即可得到自定义附加模块。

2,创建 entitlements 文件,告诉YonBuilder移动开发云编译服务器开通了推送权限。配置详情参考论坛文档,示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>aps-environment</key>
    <string>development</string>
</dict>
</plist>

如果希望在收到通知后立即去下载相关内容,使相关内容可以尽快显示出来。请配置 后台运行权限

模块接口

init

初始化推送服务,1.0.7以及以后版本此接口已废弃,直接调用getToken获取推送token即可

init(callback(ret,err))

params

agconnectPath:

  • 类型:字符串类型
  • 描述:应用的AppGallery Connect配置文件,获取文件。(仅1.0.7以及以后版本支持)

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
       status:         	//布尔类型;是否成功
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
       code:         	//数字类型;错误码
}

示例代码

var huaweiPush = api.require('huaweiPush');
huaweiPush.init(function(ret, err) {
    if (ret.status) {
        api.alert({ msg: "初始化成功" });
    } else {
        api.alert({ msg: "初始化失败" });
    }
});

可用性

Android系统

可提供的1.0.2及更高版本

register

向APNs(苹果推送服务)发起用户允许发送推送通知的请求

register(callback(ret))

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
       status:         	//数字类型;请求权限状态;取之范围:
                       //0:NotDetermined
                       //1:Denied
                       //2:Authorized
                       //3:Provisional
                       //4:Ephemeral
}

示例代码

var huaweiPush = api.require('huaweiPush');
huaweiPush.register(function(ret) {
    api.alert({ msg: JSON.stringify(ret)});
});

可用性

iOS 系统

可提供的1.0.2及更高版本

getToken

获取token

getToken(callback(ret,err))

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
      status:         	//布尔类型;是否成功;
       token: 			//字符串类型;status为true时有值
       belongId:		   //字符串类型;status为true时有值,仅支持Android
}

示例代码

var huaweiPush = api.require('huaweiPush');
huaweiPush.getToken(function(ret, err) {
    if (ret.status) {
        api.alert({ msg: JSON.stringify(ret) });
    } else {
        api.alert({ msg: "获取token失败" });
    }
});

可用性

Android系统,iOS系统

可提供的1.0.2及更高版本

deleteToken

删除token

deleteToken({parmas},callback(ret,err))

params

token:

  • 类型:字符串
  • 描述:要删除的token(1.0.7以及以后版本不再支持)

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
       status:         	//布尔类型;是否成功;
}

示例代码

var huaweiPush = api.require('huaweiPush');
huaweiPush.deleteToken({
        token : ''
    },function(ret, err) {
        if (ret.status) {
            api.alert({ msg: "删除token成功" });
        } else {
            api.alert({ msg: "删除token失败" });
        }
});

可用性

Android 系统,iOS系统

可提供的1.0.2及更高版本

getState

获取当前推送状态(1.0.7以及以后版本不再支持)

getState(callback(ret,err))

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
       status:         	//布尔类型;是否处于连接状态;
}

示例代码

var huaweiPush = api.require('huaweiPush');
huaweiPush.getState(function(ret, err) {
    if (ret.status) {
        api.alert({ msg: "当前状态为连接" });
    } else {
        api.alert({ msg: "当前状态为断开" });
    }
});

可用性

Android系统

可提供的1.0.2及更高版本

setPassByMsg

设置是否接受推送消息(1.0.7以及以后版本不再支持)

setPassByMsg({parmas},callback(ret,err))

params

flag:

  • 类型:布尔类型
  • 描述:是否接受消息

示例代码

var huaweiPush = api.require('huaweiPush');
huaweiPush.setPassByMsg({
        flag : true
    });

可用性

Android系统

可提供的1.0.2及更高版本

pushListener

监听推送信息。

注意iOS端推送消息接受:当程序处于关闭状态的时候收到推送消息,点击应用程序图标无法获取推送消息。用户点击通知栏可通过api.addEventListener({name: 'noticeclicked'}获取,应用程序在前台时收到推送消息可通过本接口获取。

pushListener(callback(ret,err))

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
       msg:         	//字符串类型;接收到的消息内容;iOS端msg为JSON对象类型;内部字段如下:
    {
     aps =     {
        alert =         {
            body = "\U624b\U52a8\U9600";
            title = test;
        };
        "mutable-content" = 1;
     };
     from = 99536292102486997;
     msgId = 0000000000000000;
   }
}

示例代码

var huaweiPush = api.require('huaweiPush');
huaweiPush.pushListener(function(ret, err) {
    if (ret) {
        api.alert({ msg: ret.msg });
    }
});

可用性

Android系统,iOS系统

可提供的1.0.2及更高版本

eventListener

监听点击推送信息事件(1.0.7以及以后版本不再支持)

iOS端通过api对象下的addEventListener监听:

api.addEventListener({
    name: 'noticeclicked'
}, function(ret) {
    if (ret) {
        api.alert({msg:JSON.stringify(ret)});
    }
})

eventListener(callback(ret,err))

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
       msg:         	//字符串类型;接收到的消息内容;
}

示例代码

var huaweiPush = api.require('huaweiPush');
huaweiPush.eventListener(function(ret, err) {
    if (ret) {
        api.alert({ msg: ret.msg });
    }
});

可用性

Android系统

可提供的1.0.2及更高版本

setBadge

设置桌面角标,iOS端通过api对象下的setAppIconBadge设置

setBadge({},callback(ret,err))

params

num:

  • 类型:数字类型
  • 描述:(可选项)角标数,为0是不显示角标
  • 默认值:0

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
       msg:         	//字符串类型;接收到的消息内容;
}

示例代码

var huaweiPush = api.require('huaweiPush');
huaweiPush.setBadge({
    num:5,
},function(ret, err) {
    if (ret) {
        api.alert({ msg: ret.msg });
    }
});

可用性

Android系统

可提供的1.0.2及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/07/22