更新记录

1.0.8(2026-05-27)

1.优化插件内部逻辑。 2.新增鸿蒙版本功能。

1.0.7(2026-02-14)

兼容处理安卓16K的问题。

1.0.6(2025-10-15)

调整iOS扩张配置方式。

查看更多

平台兼容性

uni-app(4.74)

Vue2 Vue3 Chrome Safari app-vue app-nvue app-nvue插件版本 Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本
× × × × × 1.0.1 5.0 1.0.1 12 1.0.1 6.0.0 1.0.7
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.74)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本 微信小程序
× × 5.0 1.0.1 12 1.0.1 6.0.0 1.0.7 ×

概述

XF-aleafVPNUTS实现了iOS平台集成Network Extensions集成leaf、Android集成leaf实现VPN功能,Harmony平台集成Aleaf HAR和VpnExtensionAbility实现VPN功能(小米手机上使用的请加uniPush,会在一定程度上对App进行保活)。

iOS插件必须看的说明

权限配置

"app-ios": {
    "distribute": {
        "modules": {},
        "icons": {},
        "splashScreens": {},
        "privacyDescription": {
            "NSSystemExtensionUsageDescription": "权限申请描述信息"
        }
    }
}

appIdxxx.PacketTunnel : 扩展ID格式 group.appIdxxx : 组名称格式

根目录下创建:nativeResources\ios 并放置ios-extension.json、ios-PacketTunnelExt.mobileprovision文件

ios-extension.json 内容如下:

{
    "PacketTunnel.appex": {
        "identifier":"com.app.xiaofei.001.PacketTunnel",
        "profile":"ios-PacketTunnelExt.mobileprovision",
        "entitlements":{
            "com.apple.developer.networking.networkextension":["packet-tunnel-provider"],
            "com.apple.security.application-groups":["group.com.app.xiaofei.001"]
        }
    }
}

ios-PacketTunnelExt.mobileprovision 文件为扩展appIdxxx.PacketTunnel的描述文件(请不要修改文件名称只替换描述文件)

调整插件内部的UTS.entitlements文件内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.developer.networking.networkextension</key>
    <array>
        <string>packet-tunnel-provider</string>
    </array>
    <key>com.apple.security.application-groups</key>
    <array>
        <string>group.com.app.xiaofei.001</string>
    </array>
</dict>
</plist>

Harmony插件必须看的说明

Harmony平台需要在宿主工程中注册VPN Extension入口。插件内已提供Harmony实现代码,宿主工程需要配置 harmony-configs/entry/src/main/ets/aleafvpn/AleafVpnExtension.etsharmony-configs/entry/src/main/module.json5

Harmony前置条件

  • 使用支持Harmony的HBuilderX、uni-app x和DevEco Studio环境。
  • Harmony工程需支持API 6.0.0及更高版本。
  • 宿主应用需要完成Harmony签名配置,并允许系统VPN授权弹窗。
  • 调用 setConfig 时如果传入 isShowNotify: true,插件会在 startVPN 前请求应用通知开关;用户拒绝通知开关时,startVPN 会通过 fail 返回错误。
  • 当前通知栏保活使用普通通知能力和 isOngoing,不需要配置 ohos.permission.SET_UNREMOVABLE_NOTIFICATION。该权限属于不可移除通知场景,普通应用可能无法申请。

配置 harmony-configs/entry/src/main/ets/aleafvpn/AleafVpnExtension.ets

在宿主工程中创建文件:

harmony-configs/entry/src/main/ets/aleafvpn/AleafVpnExtension.ets

文件内容保持为插件VPN Extension的继承入口:

import PluginAleafVpnExtension from '@uni_modules/xf-aleafvpnuts/utssdk/app-harmony/AleafVpnExtension';

export default class AleafVpnExtension extends PluginAleafVpnExtension {
}

配置 harmony-configs/entry/src/main/module.json5

module.json5module.extensionAbilities 中注册VPN Extension:

{
  "name": "AleafVpnExtension",
  "srcEntry": "./ets/aleafvpn/AleafVpnExtension.ets",
  "icon": "$media:layered_image",
  "label": "$string:EntryAbility_label",
  "description": "$string:EntryAbility_desc",
  "type": "vpn",
  "exported": false
}

同时确认 module.requestPermissions 中包含网络权限:

{
  "name": "ohos.permission.INTERNET"
}

如果宿主工程已有其他 extensionAbilitiesrequestPermissions,只需要合并以上配置,不要覆盖已有配置。srcEntry 必须和实际文件路径 ./ets/aleafvpn/AleafVpnExtension.ets 一致,name 必须和插件内启动的 AleafVpnExtension 一致。

插件接口

setConfig

配置VPN参数

uni-app项目中(nvue)调用示例:

import { setConfig } from "@/uni_modules/XF-aleafVPNUTS"

setConfig({
  conf: "[General]\n loglevel = trace\n logoutput = REPLACE-LEAF-LOG-FILE\n dns-server = 223.5.5.5, 114.114.114.114\n tun-fd = REPLACE-ME-WITH-THE-FD\n routing-domain-resolve = true\n [Proxy]\n Direct = direct\n Proxy = trojan, www.demo.vip, 443, password=demo, sni=www.demo.vip\n [Rule]\n FINAL, Proxy",
  complete: (res) => {
        console.log(res)
  }
});

uni-app x项目(uvue)中调用示例:

import { setConfig } from "@/uni_modules/XF-aleafVPNUTS";
import { ConfigOptions } from "@/uni_modules/XF-aleafVPNUTS/utssdk/interface.uts";

let options = {
  conf: "[General]\n loglevel = trace\n logoutput = REPLACE-LEAF-LOG-FILE\n dns-server = 223.5.5.5, 114.114.114.114\n tun-fd = REPLACE-ME-WITH-THE-FD\n routing-domain-resolve = true\n [Proxy]\n Direct = direct\n Proxy = trojan, www.demo.vip, 443, password=demo, sni=www.demo.vip\n [Rule]\n FINAL, Proxy",
  isShowNotify: true,
  complete: (res : any) => {
    console.log(res)
  }
} as ConfigOptions;
setConfig(options);

可用性

iOS、Android、Harmony系统

可提供的1.0.7及更高版本

startVPN

开启VPN服务

uni-app项目中(nvue)调用示例:

import { startVPN } from "@/uni_modules/XF-aleafVPNUTS"

startVPN({
  complete: (res) => {
        console.log(res)
  }
});

uni-app x项目(uvue)中调用示例:

import { startVPN } from "@/uni_modules/XF-aleafVPNUTS";
import { VPNOptions } from "@/uni_modules/XF-aleafVPNUTS/utssdk/interface.uts";

let options = {
  complete: (res : any) => {
    console.log(res)
  }
} as VPNOptions;
startVPN(options);

可用性

iOS、Android、Harmony系统

可提供的1.0.7及更高版本

stopVPN

停止VPN服务

uni-app项目中(nvue)调用示例:

import { stopVPN } from "@/uni_modules/XF-aleafVPNUTS"

stopVPN({
  complete: (res) => {
        console.log(res)
  }
});

uni-app x项目(uvue)中调用示例:

import { stopVPN } from "@/uni_modules/XF-aleafVPNUTS";
import { VPNOptions } from "@/uni_modules/XF-aleafVPNUTS/utssdk/interface.uts";

let options = {
  complete: (res : any) => {
    console.log(res)
  }
} as VPNOptions;
stopVPN(options);

可用性

iOS、Android、Harmony系统

可提供的1.0.7及更高版本

addStatusCallback

监听VPN状态通知

uni-app项目中(nvue)调用示例:

import { addStatusCallback } from "@/uni_modules/XF-aleafVPNUTS"

addStatusCallback({
  complete: (res) => {
        console.log(res)
  }
});

uni-app x项目(uvue)中调用示例:

import { addStatusCallback } from "@/uni_modules/XF-aleafVPNUTS";
import { StatusOptions } from "@/uni_modules/XF-aleafVPNUTS/utssdk/interface.uts";

let options = {
  complete: (res : any) => {
    console.log(res)
  }
} as StatusOptions;
addStatusCallback(options);

可用性

iOS、Android、Harmony系统

可提供的1.0.7及更高版本

isConnected

是否已连接

uni-app项目中(nvue)调用示例:

import { isConnected } from "@/uni_modules/XF-aleafVPNUTS"

const connected = isConnected();
console.log(connected);

uni-app x项目(uvue)中调用示例:

import { isConnected } from "@/uni_modules/XF-aleafVPNUTS";

const connected = isConnected();
console.log(connected);

可用性

iOS、Android、Harmony系统

可提供的1.0.7及更高版本

getConfig

获取正在运行的配置文件内容

uni-app项目中(nvue)调用示例:

import { getConfig } from "@/uni_modules/XF-aleafVPNUTS"

const conf = getConfig();
console.log(conf);

uni-app x项目(uvue)中调用示例:

import { getConfig } from "@/uni_modules/XF-aleafVPNUTS";

const conf = getConfig();
console.log(conf);

可用性

iOS、Android、Harmony系统

可提供的1.0.7及更高版本

getLog

获取日志信息

uni-app项目中(nvue)调用示例:

import { getLog } from "@/uni_modules/XF-aleafVPNUTS"

getLog({
  complete: (res) => {
    console.log(res)
  }
});

uni-app x项目(uvue)中调用示例:

import { getLog } from "@/uni_modules/XF-aleafVPNUTS";
import { GetLogOptions, LeafLogResult } from "@/uni_modules/XF-aleafVPNUTS/utssdk/interface.uts";

let options = {
  success: (res : LeafLogResult) => {
    console.log(res.detail)
  },
  complete: (res : any) => {
    console.log(res)
  }
} as GetLogOptions;
getLog(options);

可用性

iOS、Android、Harmony系统

可提供的1.0.7及更高版本

隐私、权限声明

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

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

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

暂无用户评论。