更新记录
1.0.1(2026-08-03)
- 增加连接、登陆、获取状态等接口
1.0.0(2026-08-01)
- univpn
平台兼容性
uni-app(3.7.11)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| - |
- |
- |
- |
√ |
√ |
5.0 |
√ |
- |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| - |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
uni-app x(3.7.11)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| - |
- |
5.0 |
√ |
- |
- |
其他
UniVPN Client
开发文档
- 拷贝demo里的nativeResources文件到项目根目录
- 集成过程有问题可以点击上面的"进入交流群"私聊作者
接口
import {UTSUniVPN} from "@/uni_modules/wrs-uts-univpn"
UTSUniVPN.vpnInit()
let path = plus.io.convertLocalFileSystemURL("_download")
let flag = UTSUniVPN.logInit({
path: path,
loglevel: 3 // 1: error 2:warning 3: info 4: debug
})
if (flag) {
this.showMsg("日志初始化成功")
} else {
this.showMsg("日志初始化失败")
}
let platform = uni.getSystemInfoSync().platform
switch (platform) {
case "android": {
let builderVersion = UTSUniVPN.getBuildSDKVersion()
if (builderVersion >= 30) {
let flag = UTSUniVPN.isExternalStorageManager()
if (!flag) {
UTSUniVPN.toFilesAccessPermissionPage()
}
} else if (builderVersion >= 23) {
this.requestPermission([
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE"
])
}
}
break;
case "ios": {
}
break;
default:
break;
}
let params = {}
params.serverAddrEntityList = [{
serverAddress: this.serverAddress,
port: parseInt(this.port)
}]
params.gmAlgorithm = 0 // //是否支持国密 1: 支持 0:不支持
if (params.gmAlgorithm == 1) {
params.gmSigCertPath = "/xxx/xxx" // 设置国密证书路径
params.gmEncCertPath = "/xx/xx" // 设置国密加密证书路径
}
params.routeCover = 0 // //设置是否支持路由覆盖 1: 覆盖 0:不覆盖
params.tunnelMold = 0 // 设置隧道模式, 0为可靠模式 1为快速模式 2为自适应模式
params.tcpbuffersize = 0 /// 设置tcp缓存区
// params.whiteApp = ["om.tencent.mobileqq"] // 设置白名单
let isStartConnect = UTSUniVPN.startConnect(params, (resp) => {
let opt = resp.opt
switch (opt) {
case "onConnectSuccess": {
// 0-账号密码 1:匿名证书 2:证书挑战 3:证书+账号密码 --必传
let authMode = resp.authMode
if (authMode == 0) { // LOGIN_USERNAME_AND_PASSWORD
this.loginAccountAndPassword()
} else {
this.loginAuthMode(authMode)
}
}
break;
case "onConnectFail": {
}
break;
default:
break;
}
})
if (isStartConnect) {
this.showMsg("连接构建成功")
} else {
this.showMsg("连接构建失败")
}
let params = {}
params.cauthType = 0
params.userName = this.userName
params.password = this.password
let flag = UTSUniVPN.startLogin(params, (resp) => {
let code = resp.code
switch (code) {
case 1200: {
this.showMsg("登陆成功")
}
break;
case 1201: {
this.showMsg("本地服务器验证失败 响应码:" + code)
}
break;
case 1202: {
this.showMsg("需要修改密码 响应码:" + code)
}
break;
case 1203: {
this.showMsg("需要进行双因子验证 响应码:" + code)
}
break;
default: {
this.showMsg("登陆失败 响应码:" + code)
}
break;
}
})
if (flag) {
this.showMsg("登陆构建成功")
} else {
this.showMsg("登陆构建失败")
}
let flag = UTSUniVPN.logout()
if(!flag) {
this.showMsg("断开连接失败")
}
let status = UTSUniVPN.getConnectStatus()
if(status == 1) {
this.showMsg("已连接")
} else if(status == 0) {
this.showMsg("未连接")
}
let path = UTSUniVPN.getLogPath()
let params = {}
params.originPassword = ""
params.newPassword = ""
params.confirmPassword = ""
UTSUniVPN.modifyPassword(params, (resp)=>{
let code = resp.code
})
let params = {}
params.simcode = ""
UTSUniVPN.verificationCode(params, (resp)=>{
let code = resp.code
})