更新记录

1.0.1(2022-01-26)

修复安卓打包冲突

1.0.0(2022-01-25)

首发支持阿里云推送安卓的五大厂商推送:华为、小米、VIVO、OPPO、魅族;iOS 原生支持APNS


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 15

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


JY-AliPushThird插件使用说明

如果有问题或者其他需求(如新增方法等),可联系我处理;

如果有其他原生插件需要定制开发,也可以联系我开发。

注意:

插件示例工程,所有的方法都是做的按钮点击事件,具体的方法调用是按照自己业务来进行;

建议:

1.点对点推送,如何实现?

答:使用Alias,tag,但是各有差异;推荐使用Alias,并且用用户的Token,做一次加密,比如Base64,设置为用户的Alias;后台推送的时候就拿该用户的最新token,一样做Base64,然后去推送,可实现点对点

2.如何测试推送?

答:请按照插件使用流程,依次配置,自定义基座,并且选择运行自定义基座;代码里面实现消息监听方法,即可测试推送。

3.对应的代码写在Uni项目的哪个位置?

答:具体位置没有要求,建议是监听类型的,放到App.vue(App.vue也是可以做跳转的),其他的按照自己业务逻辑处理

安卓如果8.0以上可能存在收到消息,但是没有弹窗、通知等情况,需要设置通知渠道,固定为:1


JY-AliPushThird插件交流群:134162170 希望大家踊跃加群,相互交流沟通学习


我的QQ是:374850759 (加好友麻烦备注:JY-AliPushThird插件)



自定义基座制作方法、常见问题等,可查看简书地址(这个是极光的,阿里也类似哈)

https://www.jianshu.com/p/fb2ac886901b


常见问题


  • 问题1.appkey 如何获取

  • 答:appkey,appsecret是阿里云后台,针对某一个应用生成的,所以需要去阿里注册账号,登录以后创建应用,即可获得appkey;注意安卓和iOS,是两个应用

  • 问题2.为什么我试用/购买了插件,也自定义了基座,但是运行的时候一直提示不包含基座?

  • 答:这个问题,第一,所有的APP插件,都是需要自定义基座的,所以先保证自己是在自定义基座运行,而不是标准基座;第二,如果插件也勾选了,基座也自定义了,但是一直提示不支持,这个时候可以选择关闭一下HBuilder,然后重新删除插件,重新勾选,重新自定义基座(自定义基座时,云端的确有时会失败,所以只能这样重试一下)

  • 问题3.安卓/iOS杀掉进程后,还能收到推送吗?

  • 答:iOS推送用的APNS,所有就算是杀掉APP进程,一样可以收到推送,但是这个也要看APNS的通道情况;安卓,因为生态问题,如果杀掉了进程,所有的推送都会收不到,不过部分厂商也针对性出了解决方案,也就是厂商推送,比如魅族、华为、小米等;但是因为插件不清楚到底使用插件的人会开通哪些厂商的推送,所以暂时没有对接任何一家厂商推送,如果有这样的需求,可以联系我进行插件定制,如果后续定制的人多了,我也会开放多个插件,针对性的来处理厂商的推送。


请注意,iOS请勾选Manifest里面的Push模块!(不会对iOS和安卓推送有任何影响)

此版本不支持厂商推送,预计月底会更新厂商推送的版本!!(已经买齐了五个厂商的设备,元旦回来处理)

一、插件使用流程(原生插件调试,都需要自定义基座)

1.配置Appkey、Appsecret,需要先去阿里云官网进行注册,添加应用,然后配置推送设置(安卓包名、iOS证书等)

a.找到manifest.json,原生插件配置
b.勾选JY-AliPushThird
c.填写Appkey及Appsecret(注意需保证包名和appkey在阿里云的配置一致)

2.引用原生插件

const jy_aliPush = uni.requireNativePlugin('JY-AliPushThird');

3.厂商配置教程

在Manifest.json,原生插件配置,勾选JY-AliPushThird
按照描述,填写相关的厂商配置
打开极光推送的后台,开启并配置相关的厂商推送数据

4.厂商配置数据规范程

华为:
填写android_hw_appid,格式为:appid=*******(具体值为华为后台分配的appid);华为的请先去华为后台配置应用的SHA256证书(和你打包的证书有关)
============= 换行符 =============
小米:
填写android_xm_appid,格式为:MI-*****(小米后台的值,加一个前缀 MI-)
填写android_xm_appkey,格式为:MI-*****
============= 换行符 =============
OPPO:
填写android_oppo_appkey,格式为:OP-*****(OPPO后台的值,加一个前缀 OP-)
填写android_oppo_appsecret,格式为:OP-*****
============= 换行符 =============
VIVO:
填写android_vivo_appid,格式为:*****(直接填写VIVO后台的值)
填写android_vivo_appkey,格式为:*****
============= 换行符 =============
魅族:
填写android_mz_appkey,格式为:MZ-*****(魅族后台的值,加一个前缀 MZ-)
填写android_mz_appid,格式为:MZ-*****

二、监听类API接口

  • 2.1.通知监听:addNotificationListener

    addNotificationListener

    jy_aliPush.addNotificationListener(result=> {
    //  通知的监听方法,数据格式安卓/iOS数据不一致,注意区分
    //  注:若没有返回任何数据,考虑是否初始化完成
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
    });
  • 2.2.通知打开监听:addOpenNotificationListener

    addOpenNotificationListener

    jy_aliPush.addOpenNotificationListener(result=> {
    //  打开通知的监听方法,数据格式安卓/iOS数据不一致,注意区分
    //  注:若没有返回任何数据,考虑是否初始化完成
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
    });
  • 2.3.通知打开NoAction监听:addOpenNoActionNotificationListener

    addOpenNoActionNotificationListener

    jy_aliPush.addOpenNoActionNotificationListener(result=> {
    //  打开通知NoAction的监听方法,数据格式安卓/iOS数据不一致,注意区分
    //  注:若没有返回任何数据,考虑是否初始化完成
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
    });
  • 2.4.通知移除监听:addNotiRemoveListener

    addNotiRemoveListener

    jy_aliPush.addNotiRemoveListener(result=> {
    //  通知移除的监听方法,数据格式安卓/iOS数据不一致,注意区分
    //  注:若没有返回任何数据,考虑是否初始化完成
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
    });
  • 2.5.应用内通知监听:addNotiInAppListener

    addNotiInAppListener

    jy_aliPush.addNotiInAppListener(result=> {
    //  应用内通知的监听方法,数据格式安卓/iOS数据不一致,注意区分
    //  注:若没有返回任何数据,考虑是否初始化完成
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
    });
  • 2.6.消息监听:addMessageListener

    addMessageListener

    jy_aliPush.addMessageListener(result=> {
    //  消息的监听方法,数据格式安卓/iOS数据不一致,注意区分
    //  注:若没有返回任何数据,考虑是否初始化完成
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
    });

三、Alias相关API接口

  • 3.1.增加Alias:addAlias

    addAlias

    jy_aliPush.addAlias({
    //  按照自己的业务需求来设置
    alias: '这里是需要设置的userAlias'
    }, result=> {
    //  设置成功或者失败,都会通过这个result回调返回数据
    //  注:若没有返回任何数据,考虑是否初始化完成
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
    });
  • 3.2.查询Alias:listAliases

    listAliases

jy_aliPush.listAliases({
//  可以不用传值进去,但是需要配置这项数据
}, result=> {
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
});
  • 3.3.删除Alias:removeAlias

    removeAlias

jy_aliPush.removeAlias({
alias: "需要删除alias"
}, result=> {
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
});

四、Tag相关API接口

  • 4.1.新增Tag:bindTag

    bindTag

    jy_aliPush.bindTag({
    target: "1", // 1本设备,2本设备绑定的账号,3别名
    tags: [
    "Tag1",
    "Tag2"
    ]
    }, result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 4.2.获取已绑定Tags:listTags

    listTags

    jy_aliPush.listTags({
    target: '1' // 同上
    }, result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 4.3.删除Tag

    unBindTag

    jy_aliPush.unBindTag({
    target: "1", // 1本设备,2本设备绑定的账号,3别名
    tags: [
    "Tag1",
    "Tag2"
    ]
    }, result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });

五、账号相关API接口

  • 5.1.绑定账号:bindAccount

    bindAccount

    jy_aliPush.bindAccount({
    account: "账号"
    },result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 5.2.解除账号绑定:unBindAccount

    unBindAccount

    jy_aliPush.unBindAccount(result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });

六、角标相关接口(API)

注意:这些接口是处理的阿里云服务器的角标,并不是APP显示的角标;如果要处理APP的角标需要调用Uni的方法:

plus.runtime.setBadgeNumber(数字)

  • 6.1.同步阿里服务器角标(只有iOS有这个方法)

    syncBadgeNum

    jy_aliPush.syncBadgeNum({
    badge: '1'
    }, result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 6.2.设置桌面角标

    //    这个才是设置桌面角标,上面那个是同步阿里云服务器的角标数量
    plus.runtime.setBadgeNumber(3);

七、获取设备ID

  • 7.1.获取设备ID:getDeviceId

    getDeviceId

    jy_aliPush.getDeviceId(result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });

隐私、权限声明

1. 本插件需要申请的系统权限列表:

推送

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件使用的 阿里云推送 SDK会采集数据,详情可参考https://help.aliyun.com/product/30047.html

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问