更新记录

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

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


深信服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
                    });
                }

            }

隐私、权限声明

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

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

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

插件不采集任何数据,插件VPN登陆功能使用SangforSDK,参考其官方网站 https://bbs.sangfor.com.cn/atrustdeveloper/appsdk/

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

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