更新记录

1.1.0(2024-10-15)

修复1.0.9更新SDK退回了2.2.14.4_1125的问题

1.0.9(2024-08-27)

修复BUG

1.0.8(2023-10-22)

Android端修改SDK启动模式为MODE_SUPPORT_MUTABLE,使用MODE_SUPPORT_MUTABLE模式会根据你当前服务端控制台的配置动态切换MODE_VPN和MODE_VPN_SANDBOX

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 16

原生插件通用使用流程:

  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仅支持armeabi-v7a架构, arm64-v8a架构模拟器, 不支持X86架构模拟器,建议在真机环境下运行调试。

获取插件对象

const aTrustVPN = uni.requireNativePlugin('Sangfor-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:'',
                randCode:'',
                randCodeBase64:''
            }
        },
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();
                        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
                    });
                }

            }

常见问题原因排查

        常见错误码信息请查阅:https://bbs.sangfor.com.cn/atrustdeveloper/appsdk/android/error.html

隐私、权限声明

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. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

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