更新记录

2.2(2024-04-07)

修复Android停止VPN时会崩溃的bug。

2.1(2024-04-01)

优化Android插件内部逻辑,更新文档说明。

2.0(2024-03-23)

更新Android的内核版本到最新。

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:7.0 - 12.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:11 - 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原生插件配置”->”云端插件“列表中删除该插件重新选择


leaf VPN接入

/ Title: XF-aleafVPN Description: XF-aleafVPN /

[requestIgnoreBattery](#a0) [setConfig](#a1) [startVPN](#a2) [stopVPN](#a3) [addStatusCallback](#a4) [isConnected](#a5) [getConfig](#a6) [getLog](#a7)

概述

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

模块使用攻略

  1. iOS扩展配套插件地址下载:Gitee仓库

  2. 如果Android出现崩溃,可以在Gitee仓库下载Android_so_V0.10.9.zip文件替换apk包里面的so文件,还可以在manifest.json的app-plus->distribute->android节点中尝试配置如下信息:

"packagingOptions" : [
    "doNotStrip '*/*/libleafandroid.so'"
]

接口

requestIgnoreBattery

申请加入电池白名单

requestIgnoreBattery(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,  //布尔型;true||false
    msg : ''
}

示例代码

var demo = uni.requireNativePlugin('XF-aleafVPN');
demo.requestIgnoreBattery(function(ret){
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

setConfig

加载VPN配置信息

setConfig({params},callback(ret))

params

name:

  • 类型:字符串
  • 描述:(可选项)vpn名称。
  • 默认值:iLeaf

conf:

  • 类型:字符串
  • 描述:(必填项)配置信息 (模块中 logoutput = REPLACE-LEAF-LOG-FILE 和 tun-fd = REPLACE-ME-WITH-THE-FD 为固定值,不能更换为其他,否则无法正常进行连接和获取日志)
[General]
loglevel = trace
logoutput = REPLACE-LEAF-LOG-FILE
dns-server = 223.5.5.5, 114.114.114.114
tun-fd = REPLACE-ME-WITH-THE-FD
routing-domain-resolve = true
[Proxy]
Direct = direct
Proxy = trojan, 192.168.1.1, 443, password=123456, sni=www.domain.com
[Rule]
FINAL, Proxy

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,  //布尔型;true||false
    msg : ''
}

示例代码

var demo = uni.requireNativePlugin('XF-aleafVPN');
demo.setConfig({
    conf : ""
},function(ret){
    alert(JSON.stringify(ret));
});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

startVPN

连接VPN

startVPN(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,  //布尔型;true||false
    msg: ""
}

示例代码

var demo = uni.requireNativePlugin('XF-aleafVPN');
demo.startVPN(function(ret){
    alert(JSON.stringify(ret));
});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

stopVPN

断开VPN

stopVPN(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,  //布尔型;true||false
    msg: ""
}

示例代码

var demo = uni.requireNativePlugin('XF-aleafVPN');
demo.stopVPN(function(ret){
    alert(JSON.stringify(ret));
});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

addStatusCallback

添加VPN连接状态监听

addStatusCallback(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: 'Invalid',//Invalid Disconnecting Connecting Connected Reasserting Disconnected
}

示例代码

var demo = uni.requireNativePlugin('XF-aleafVPN');
demo.addStatusCallback(function(ret){
    alert(JSON.stringify(ret));
});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

isConnected

VPN是否连接

isConnected()

ret:

  • 类型:布尔对象

示例代码

var demo = uni.requireNativePlugin('XF-aleafVPN');
var isConnected = demo.isConnected();

可用性

iOS、Android系统

可提供的1.0.0及更高版本

getConfig

获取配置文件

getConfig(callback(ret))

ret:

  • 类型:字符串

示例代码

var demo = uni.requireNativePlugin('XF-aleafVPN');
var ret = demo.getConfig();

可用性

iOS、Android系统

可提供的1.0.0及更高版本

getLog

获取日志文件

getLog(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: : true,
    log : ''
}

示例代码

var demo = uni.requireNativePlugin('XF-aleafVPN');
demo.getLog(function(ret) {});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

隐私、权限声明

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

android.permission.INTERNET android.permission.CHANGE_NETWORK_STATE android.permission.ACCESS_NETWORK_STATE android.permission.FOREGROUND_SERVICE android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS

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

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

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