更新记录
2.4.1(2024-04-30) 下载此版本
- 升级iOS SDK 到3.2.1版本
2.4.0(2024-04-01) 下载此版本
更新极光认证SDK,支持北京联通
2.3.3(2024-03-08) 下载此版本
1、修复Android无法加载uniapp图片的bug
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 11.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | 适用版本区间:11 - 16 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
jverification-hbuilder-plugin
极光认证 官方支持的 Hbuilder 插件(Android & iOS)。是基于 HBuilder 提供的 uni-app 原生插件扩展 进而开发出的认证插件。开发者可以轻松将极光认证集成到自己的项目中,从而在 js 层实现对认证的控制。
uniapp插件市场地址
接入
- 1.将 nativeplugins/JG-JVerification 导入项目对应位置。
- 2.项目 manifest.json 中接入 JG-JVerification 插件。
- 3.在项目中引用插件
const jv = uni.requireNativePlugin('JG-JVerification');
- 4.从 v2.0.0 版本开始还需引入JG-JCore 插件。
since v2.0.0 注意事项
为了适配更多的极光 Uniapp 插件,我们引入了极光 Jcore 基础插件库。
从极光认证插件 2.0.0 版本开始,必须同时接入 JCore 插件才能正常使用。
已接入 2.0.0 版本之前的应用升级时请注意 appkey 和 channel 配置信息已转移至 JCore 中。
DEMO 体验
按照以下步骤快速体验 JVerification_Hbuilder_demo:
- 1.在极光 portal注册应用并开通认证功能。
- 2.在项目 manifest.json 中配置您申请的极光 appkey 信息
- 3.HbuilderX 中制作打包自定义基座,包名,签名,bundleID 需要与对应 appkey 配置的应用信息保持一致
- 4.HbuilderX 使用自定义基座运行即可
API 说明
JVerification Hbuilder API
引用方式
const jv = uni.requireNativePlugin('JG-JVerification');
设置 debug 模式
API - setDebugMode(Boolean)
开启 debug 模式,请在初始化前调用
参数说明
- true - 开启,false - 关闭
示例
jv.setDebugMode(true);
初始化
API - init(Object,CALLBACK)
初始化接口
参数说明
- Object
参数名称 | 参数类型 | 参数说明 |
---|---|---|
timeout | number | 设置初始化超时时间,单位毫秒,合法范围是(0,30000],推荐设置为 5000-10000,默认值为 10000。 |
isProduction | boolean | 是否生产环境。如果为开发状态,设置为 false;如果为生产状态,应改为 true。可选,默认为 false。(仅作用与 iOS) |
advertisingId | string | 广告标识符,可选。(仅作用与 iOS) |
示例
jv.init({
timeout:7000,
isProduction:false,
},result=>{
let code = result.code
let desc = result.content
});
获取初始化状态
API - isInitSuccess(CALLBACK)
初始化是否成功
示例
jv.isInitSuccess(result=>{
let isSucc = result.enable;
})
判断网络环境是否支持
API - checkVerifyEnable(CALLBACK)
判断当前网络环境是否可以发起认证
示例
jv.checkVerifyEnable(result=>{
let isSupport = result.enable;
})
获取 token
API - getToken(number,CALLBACK)
初始化接口
参数说明
- number:设置初始化超时时间,单位毫秒,合法范围是(0,30000],推荐设置为 5000-10000,默认值为 10000。
示例
jv.getToken(7000,result=>{
let code = result.code;
let token = result.content;
let operator = result.operator;
});
登录预取号
API - preLogin(number,CALLBACK)
验证当前运营商网络是否可以进行一键登录操作,该方法会缓存取号信息,提高一键登录效率。建议发起一键登录前先调用此方法。
参数说明
- number:设置初始化超时时间,单位毫秒,合法范围是(0,30000],推荐设置为 5000-10000,默认值为 10000。
示例
jv.preLogin(7000,result=>{
let code = result.code;
let token = result.content;
});
清除预取号缓存
API - clearPreLoginCache()
清除预取号缓存。
示例
jv.clearPreLoginCache();
请求授权一键登录
- 一键登录需要依赖预取号结果,如果没有预取号,一键登录时会自动预取号。
- 建议拉起授权页前,比如在开屏页或者业务入口页预先调用此接口进行预取号,可以提升授权页拉起速度,优化体验。
- 一键登录请求成功后,不要频繁重复调用。运营商会限制单位时间内请求次数。
- 不要在一键登录回调中重复调用预取号或者拉起授权页接口。
API - loginAuth(Object,CALLBACK,EVENTCALLBACK)
调起一键登录授权页面,在用户授权后获取 loginToken,同时支持授权页事件监听。
参数说明
- Object
参数名称 | 参数类型 | 参数说明 |
---|---|---|
timeout | number | 设置初始化超时时间,单位毫秒,合法范围是(0,30000],推荐设置为 5000-10000,默认值为 10000。 |
autoFinish | boolean | 是否自动关闭授权页,true - 是,false - 否 |
animationFlag | boolean | 拉起授权页时是否需要动画效果,true - 是,false - 否,默认 true。(仅作用与 iOS) |
示例
jv.loginAuth({
autoFinish:true,
timeout:5000
},result=>{
// 结果监听
let code = result.code;
let loginToken = result.content;
let operator = result.operator;
},event=>{
// 事件监听
let code = result.code;
let eventDesc = result.content;
})
自定义授权页面样式
iOS 和 Android 分开设置
API - setCustomUIWithConfigAndroid
修改 Android 授权页面主题,支持传入竖屏和横屏两套config。sdk会根据当前横竖屏状态动态切换,需在 loginAuth 接口之前调用。
接口定义
// 设置一个 config 时应用全部
jv.setCustomUIWithConfigAndroid(JVerifyUIConfig)
// 设置两个 config 时,前者应用与竖屏配置,后者应用与横屏配置
jv.setCustomUIWithConfigAndroid(JVerifyUIConfig,JVerifyUIConfig)
参数说明
- JVerifyUIConfig(object):Android 主题配置参数集合,参考Android JVerifyUIConfig 说明
示例
jv.setCustomUIWithConfigAndroid({
setNavColor:0xff000000,
setLogBtnText:" 极光认证测试 ",
setPrivacyState:false,
setAppPrivacyColor:[0xff00f000,0xff000000]
})
API - addCustomViewsClickCallback
添加自定义 view 回调。配合 setCustomUIWithConfigAndroid 的 addCustomViews 属性一起使用
示例
jv.addCustomViewsClickCallback(id=>{
})
API - setCustomUIWithConfigiOS
修改 iOS 授权页面主题,需在 loginAuth 接口之前调用。
接口定义
jv.setCustomUIWithConfigiOS(JVerifyUIConfig)
参数说明
- JVerifyUIConfig(object):iOS 主题配置参数集合,参考iOS JVerifyUIConfig 说明
示例
jv.setCustomUIWithConfigiOS({
navColor:0xff000000,
logBtnText:" 极光认证测试 ",
privacyState:true,
appPrivacyColor:[0xff000000,0xff000000]
})
API - dismissLoginAuth
隐藏登录页.当授权页被拉起以后,可调用此接口隐藏授权页。当一键登录自动隐藏授权页时,不建议调用此接口。
接口定义
jv.dismissLoginAuth(flag, res=>{
//授权页隐藏完成
})
参数说明
- flag:隐藏时是否需要动画。
示例
jv.dismissLoginAuth(true,
res=>{
//授权页隐藏完成
})
获取验证码
API - getCode
- 获取短信验证码,使用此功能需要在Portal控制台中极光短信模块添加短信签名和验证码短信模版,或者使用默认的签名或模版。详见:操作指南
- 通过此接口获得到短信验证码后,需要调用极光验证码验证API来进行验证,详见:验证码验证 API
接口定义
jv.getCode(object)
参数说明
- Object
参数名称 | 参数类型 | 参数说明 |
---|---|---|
phoneNumber | string | 电话号码 |
signID | string | 短信签名ID,如果为nil,则为默认短信签名ID |
templateID | string | 短信模板ID,如果为nil,则为默认短信模板ID |
示例
jv.getCode({
phoneNumber : "电话号码",
signID : "短信签名ID",
templateID : "短信模板ID"
})
设置前后两次获取验证码的时间间隔
API - setTimeWithConfig(number)
设置前后两次获取验证码的时间间隔。
参数说明
- number:默认30000ms,有效范围(0,300000)。
示例
jv.setTimeWithConfig(7000);
错误码
code | message | 备注 |
---|---|---|
1000 | verify consistent | 手机号验证一致 |
1001 | verify not consistent | 手机号验证不一致 |
1002 | unknown result | 未知结果 |
1003 | token expired | token失效 |
1004 | sdk verify has been closed | SDK 发起认证未开启 |
1005 | 包名和 AppKey 不匹配 | 请检查客户端配置的包名与官网对应 Appkey 应用下配置的包名是否一致 |
1006 | frequency of verifying single number is beyond the maximum limit | 同一号码自然日内认证消耗超过限制 |
1007 | beyond daily frequency limit | appKey 自然日认证消耗超过限制 |
1008 | AppKey 非法 | 请到官网检查此应用信息中的 appkey,确认无误 |
1009 | 请到官网检查此应用的应用详情;更新应用中集成的极光 SDK 至最新 | |
1010 | verify interval is less than the minimum limit | 同一号码连续两次提交认证间隔过短 |
1011 | appSign invalid | 应用签名错误,检查签名与 Portal 设置的是否一致 |
2000 | 内容为token | 获取 token 成功 |
2001 | fetch token failed | 获取 token 失败 |
2002 | init failed | SDK 初始化失败 |
2003 | network not reachable | 网络连接不通 |
2004 | get uid failed | 极光服务注册失败 |
2005 | request timeout | 请求超时 |
2006 | fetch config failed | 获取应用配置失败 |
2007 | 内容为异常信息 | 验证遇到代码异常 |
2008 | Token requesting, please try again later | 正在获取 token 中,稍后再试 |
2009 | verifying, please try again later | 正在认证中,稍后再试 |
2010 | don't have READ_PHONE_STATE permission | 未开启读取手机状态权限 |
2011 | 内容为异常信息 | 获取配置时代码异常 |
2012 | 内容为异常信息 | 获取 token 时代码异常 |
2013 | 内容为具体错误原因 | 网络发生异常 |
2014 | internal error while requesting token | 请求 token 时发生内部错误 |
2016 | network type not supported | 当前网络环境不支持认证 |
4001 | parameter invalid | 参数错误。请检查参数,比如是否手机号格式不对 |
4018 | 没有足够的余额 | |
4031 | 不是认证 SDK 用户 | |
4032 | 获取不到用户配置 | |
4033 | appkey is not support login | 不是一键登录用户 |
5000 | bad server | 服务器未知错误 |
6000 | 内容为token | 获取 loginToken 成功 |
6001 | fetch loginToken failed | 获取 loginToken 失败 |
6002 | fetch loginToken canceled | 用户取消获取 loginToken |
6003 | UI 资源加载异常 | 未正常添加 sdk 所需的资源文件 |
6004 | authorization requesting, please try again later | 正在登录中,稍后再试 |
7000 | preLogin success | sdk 预取号成功 |
7001 | preLogin failed | sdk 预取号失败 |
7002 | preLogin requesting, please try again later | 正在预取号中,稍后再试 |
-994 | 网络连接超时 | |
-996 | 网络连接断开 | |
-997 | 注册失败/登录失败 | (一般是由于没有网络造成的)如果确保设备网络正常,还是一直遇到此问题,则还有另外一个原因:JPush 服务器端拒绝注册。而这个的原因一般是:你当前 App 的 Android 包名以及 AppKey,与你在 Portal 上注册的应用的 Android 包名与 AppKey 不相同。 |
参考资料
Support
- 集成前请先尝试 demo 工程跑通
- 出现问题请先打开 debug 模式,拿到前端和原生日志
- 更多问题请前往极光社区
常见问题
-
1.这个sdk100M,会打包到apk吗?
包容量,与打包方式有关, 安卓应该在1M左右,看打包方式;iOS会大一些。可以看我们demo 的大小,
Android demo apk 最多也就 3 M,iOS 是 2.9M。https://docs.jiguang.cn/jverification/resources/#demo。
- 2.demo跑不起来,脑壳疼。
a、可以去GitHub上下载demo,用HbuilderX打开JVerification_Hbuilder_Demo文件,在manifest.json文件里面自己生成一个uniapp的appid,这是自动生成的。有的话换成自己的appid。
b、配置您申请的极光 appkey 信息。
c、HbuilderX 中制作打包自定义基座。注意:包名,签名,证书,bundleID 需要与对应 appkey 配置的应用信息保持一致。(极光 portal注册分配)
-
3.初始化一直报“8004,init failed”。
一定要填好极光 portal分配的包名,签名,证书,bundleID和appkey,这些全是配套的,不能瞎填。
License
MIT © JiGuang