声明
本文档仅用于JYJPush插件的使用教程,如需转载,请先征求作者同意
使用环境:Uniapp项目
支持平台:iOS/Android
使用流程
1.打开HBX,登录刚刚购买的账号,找到购买绑定的项目,点击manifest.json,选择APP原生插件配置如图:
2.点击云端插件后面的“选择云端插件”,然后勾选上对应的插件“JYJPush”,如图:
勾选成功后,点击确定,页面上将出现JYJPush的配置项,如图:
参数说明:
ios_appkey/android_appkey:
极光官方的APPKEY,获取方式如图:(跳过了极光账号注册、应用创建的流程,这个比较简单,可自己操作)
1.点击应用设置、获取Appkey
2.点击推送设置,进行APP推送的配置(iOS+Android)
安卓配置只需要填写包名,这里的包名需要和第一步(试用或者购买)的包名一致,不能修改!;如果只是试用,那么后续购买的时候,需要填写和这里一样的包名
iOS的配置有两种方式:证书和Token,推荐证书配置(证书生成方式依赖于苹果开发者账号,这里不细讲,可参考极光的生成文档:https://docs.jiguang.cn//jpush/client/iOS/ios_cer_guide/);iOS的BundleID不需要手动填写,配置了证书,会自动获取证书的包名
至此,安卓和iOS的推送配置已经完成,继续接着看
ios_channel/android_channel:渠道只能是数字或英文,不能有特殊字符或空格
推送渠道,这个非必填,但是推荐填写;举个例子:
安卓有各个应用市场,比如:应用宝、360、小米、华为等;如果需要通知哪个市场的用户质量比较好,那么就可以通过这个渠道来统计;
如果实在不知道填写什么,ios_channel就填写iOS、android_channel就填写android,如图:
配置完成后,建议通过manifest源码视图的模式检查一下,检查方法如下
4.自定义基座,打包来测试
解释一下:平时我们测试,链接手机直接运行,他会在手机上安装一个APP,这个时候可以直接打开调试,这个被称为标准基座;标准基座包含了uniapp基础的一些框架内部的东西,但是如果我们要调试第三方的插件SDK,就需要自定义基座;
简单来说,自定义基座就是标准基座 + 第三方的插件SDK组成,执照方法如下:(截图用的是Mac电脑演示,Windows也类似哈)
1.点击运行,选择自定义基座:
2.安卓自定义基座流程
- 填写对应安卓的包名(和购买、极光推送配置的保持一致),三个地方的包名必须一致!!!
- 如果使用自有证书,则填写相关的信息
-
如果是公共测试证书,直接下一步
3.iOS自定义基座流程
自定义基座完成后,会在项目的unpackage/debug目录生成对应的文件,安卓对应apk,iOS对应的是IPA
5.运行自定义基座来测试
-
1.运行前,先选择运行自定义基座;点击运行-运行手机或模拟器-选择运行基座
-
2.点击运行,选择自己的设备
- 3.等运行完成后,编写相关的代码来测试:如设置alias
const jyJPush = uni.requireNativePlugin('JY-JPush');
jyJPush.setJYJPushAlias({
userAlias: 'testAlias22'
}, result => {
console.log(JSON.stringify(result));
uni.showToast({
icon: 'none',
title: JSON.stringify(result)
})
});
- 4.只要控制栏输出了相关的数据,这个时候,基座调试就完成了;如果控制栏提示:基座不包含插件;可删除手机上面的APP,重新运行测试;如果还是不行,就删除unpackage、debug底下对应的文件,重新自定义基座来测试
6.JYJPush相关常见文件调试指南
首先,附带一个极光的常见错误码(下面文档,搜索对应的错误码)
https://docs.jiguang.cn//jpush/client/iOS/ios_api/
6.1 安卓设置alias返回6002错误
答:6002官方解释是设置超时、建议重试,一般出现在网络不佳、初始化尚未完成时;但是按照实际操作过程中,一般是包名和appkey不匹配,或者appkey未填写,或者channel未填写
解决方法:
- 1.核对打包的时候的包名、极光后台应用配置的包名、购买的时候填写的包名(试用的无此步骤),三个地方的包名是否一致
- 2.切换到Manifest,搜索Push,检查配置的JYJPUSH参数是否和填写的一致(上面有核对方法)
- 3.检查channel是否为空或者有其他特殊字符(空格也算特殊字符哦)
6.2 iOS设置alias返回6002错误
答:6002官方解释是设置超时、建议重试,一般出现在网络不佳、初始化尚未完成时;但是按照实际操作过程中,一般是bundleID和appkey不匹配,或者appkey未填写,或者channel未填写
解决方法:
- 1.核对打包的时候的包名、极光后台应用配置的包名(iOS的包名不能配置,根据证书来的)、购买的时候填写的包名(试用的无此步骤),三个地方的包名是否一致
- 2.切换到Manifest,搜索Push,检查配置的JYJPUSH参数是否和填写的一致(上面有核对方法)
- 3.检查channel是否为空或者有其他特殊字符(空格也算特殊字符哦)
6.3 iOS/Android设置alias或者其他操作,返回6022错误
答:6022官方解释是多次调用 alias 相关的 API,请在获取到上一次调用回调后再做下一次操作;在未取到回调的情况下,等待 20 秒后可做下一次操作。
解决方法:
- 1.查看自己的代码,看看是否有连续多次调用alias相关的操作(设置、查询、删除)
- 2.检查自己的网络,是否开启了代理
6.4 iOS/Android获取registrationID为空,或者为0
答:uniapp的生命周期和原生APP的生命周期并不是完全一致,如果APP一打开就去获取,就有可能失败或者获取到为0;有些时候如果极光推送集成失败,也会导致获取registrationID为空/0。
解决方法:
- 1.先调用设置alias的方法,确保返回的iResCode为0
- 2.不要在APP一打开的时候就去获取,可延迟获取
6.5 iOS设置alias返回的iResCode为0,但是后台推送成功,APP无反应
答:一般是devicetoken没有上传成功导致的(一个新的名词,具体看解决方法)
解决方法:
-
1.点击manifest.json,切换到源码视图,搜索Push,看是否打开了其他的推送,如图:
2.如果有,可手动删除,因为JYJPush会和这些Push冲突,导致DeviceToken获取失败
3.操作完成后,请删除unpackage、debug里面的ipa文件,删除手机上 的APP,重新自定义基座来测试
6.5 iOS/Android设置alias都成功,但是极光后台发送预览的设备数为0
答:极光服务的延迟问题,测试推送是否能收发,可以的话就不管他
解决方法:
- 1.见:答
6.6 iOS/Android怎么设置角标呢?
答:角标分为两种;1.APP图标上面显示的角标,这类角标,JYJPush并没有提供设置方法,建议使用uniapp官方的方法来设置:plus.runtime.setBadgeNumber(数字),注意,部分安卓机型不支持角标设置哦;2.极光服务器的角标管理,极光服务器会维护一个角标数量,可手动增减
解决方法:
- 1.极光服务器角标设置方法:setJYJPushBadge、resetJYJPushBadge