更新记录
1.0.04(2023-01-13)
去除插件内的一些非必要的提示信息
1.0.03(2023-01-12)
1、增加SDK初始化接口调用 2、增加免密登陆调用(已登录过且支持免密时自动免密上线) 3、增加短信主认证接口调用 4、抹平SDK接口Android与IOS版本之间的差异(登陆状态)
1.0.02(2023-01-09)
Android与IOS兼容性优化
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 12.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原生插件配置”->”云端插件“列表中删除该插件重新选择
深信服VPN-aTrust插件使用说明
导入示例项目说明
导入示例项目时可能会自动加入uniCloud目录,本插件无需关联服务空间,直接删除即可,否则打包时会要求关联uniCloud服务空间,由于深信服SDK的限制,本示例只能在真机环境下测试,不支持模块器运行。
获取插件对象
const aTrustVPN = uni.requireNativePlugin('VPN-aTrust-aTrustVPN');
初始化
created() {
this.initSDK();//SDK初始化,并设置监听
},
methods: {
initSDK(){
aTrustVPN.initSDK({},result => {
console.log(result)
})
}
}
VPN账号主认证
data() {
return {
mVpnAddress: 'https://xxxxx',
mUserName: 'xxxxx',
phoneNumber: '86-185xxxxxx8626@sms',
mUserPassword: 'xxxxx',
smsCode:''
}
},
loginVPN() {
uni.showLoading({
title:'VPN正在认证,请稍候...'
})
if(this.getAuthStatus()!="SFAuthStatusAuthOk"){
aTrustVPN.startPasswordAuth({
h: this.mVpnAddress,
u: this.mUserName,
p: this.mUserPassword
}, result => {
uni.hideLoading();
console.log(result)
})
}else{
//已经登陆
uni.showToast({
title: 'VPN已认证!',
duration: 2000
});
}
}
短信主验证
loginSMS() {
if(this.getAuthStatus()!="SFAuthStatusAuthOk"){
uni.showLoading({
title:'VPN正在认证,请稍候...'
})
aTrustVPN.startPrimarySmsAuth({
url: this.mVpnAddress,
phone: this.phoneNumber
}, result => {
uni.hideLoading();
uni.showToast({
title: result,
duration: 2000
});
console.log(result)
})
}else{
//已经登陆
uni.showToast({
title: 'VPN已认证!',
duration: 2000
});
}
}
辅助验证
secondLogin() {
console.log('验证码',this.smsCode)
uni.showLoading({
title:'VPN正在认证,请稍候...'
})
if(this.getAuthStatus()!="SFAuthStatusAuthOk"){
aTrustVPN.doSecondaryAuth({
code: this.smsCode
}, result => {
uni.hideLoading()
console.log(result)
})
}else{
//已经登陆
uni.showToast({
title: 'VPN已认证!',
duration: 2000
});
}
},
免密登陆
loginAutoTicket() {
//自动免密上线接口,该接口可以实现免密认证。
if(this.getAuthStatus()!="SFAuthStatusAuthOk"){
//Android true代表免密调用成功,false代表免密调用失败。
//IOS YES代表免密调用成功,NO代表免密调用失败
let res=aTrustVPN.startAutoTicket();
uni.showToast({
title: res,
duration: 2000
});
return res;
}else{
//已经登陆
uni.showToast({
title: 'VPN已认证!',
duration: 2000
});
}
},
重新获取验证码
regetSmsCode() {
aTrustVPN.regetSmsCode(result => {
console.log(result)
})
}
获取登陆状态
getAuthStatus() {
let res = "SFAuthStatusNone";
// case 0:
// return SFAuthStatusNone;
// case 1:
// return SFAuthStatusLogining;
// case 2:
// return SFAuthStatusPrimaryAuthOK;
// case 3:
// return SFAuthStatusAuthOk;//已登陆
// case 4:
// return SFAuthStatusLogouting;
// case 5:
// return SFAuthStatusLogouted;//已经注销(登出)
res = aTrustVPN.getAuthStatus()
console.log(res);
return res;
}
登出、注销
logoutVPN() {
if(this.getAuthStatus()=="SFAuthStatusAuthOk"){
uni.showLoading({
title:'正在注销,请稍候...'
})
aTrustVPN.logout({},result => {
uni.hideLoading();
console.log(result)
})
}else{
//已经登陆
uni.showToast({
title: 'VPN未登陆!',
duration: 2000
});
}
}