更新记录
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 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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) }) });