【源码授权版】和【普通授权版】功能上是完全一样的。
【源码授权版】适用于项目对外部插件源代码有要求或者需要基于插件源码进行二次开发和定制的场景。
本插件为uniapp提供获取手机所有网络接口IP信息的功能,包括IPv4和IPv6。
同时提供了检测局域网设备IP是否网络可达的接口(类似ping功能)。
在线的API文档链接:插件API文档

import { UtsNetworkUtil, UtsNetworkInterfaceInfoList } from '@/uni_modules/ts-net-tool'
使用getNetworkInterfaceInfoList获取网络接口信息
const networkUtil = new UtsNetworkUtil()
networkUtil.getNetworkInterfaceInfoList(
{
// 网络信息结果
onNetworkInfo(result : UtsNetworkInterfaceInfoList) {
for (let item of result["networkInfoList"]) {
console.log("名称: ", item.name)
console.log("类型: ", item.networkType)
if (item.cellularNetworkClass != '') {
console.log("蜂窝制式: ", item.cellularNetworkClass)
}
if (item.wifiSsidName != '') {
console.log("WIFI名称: ", item.wifiSsidName)
console.log("WIFI BSSID: ", item.wifiBssid)
console.log("WIFI频率: ", item.wifiFrequencyClass)
}
console.log("状态: ", item.status)
console.log("IPv4: ", item.ipv4Addresses)
console.log("IPv6: ", item.ipv6Addresses)
console.log("------------------------------------------")
}
},
// 错误消息(可选)
onErrorStr(errorMsg : string) {
console.log("查询网络信息出错:", errorMsg)
}
})
输出结果样例:
名称: wlan0
类型: WiFi
WIFI名称: test-wifi
WIFI BSSID: 1d:22:7e:8a:f8:4f
WIFI频率: 2.4G
状态: Active
IPv4: ["192.168.102.29"]
IPv6: ["fe80::1820:1aff:fe54:8c40%wlan0","2109:895a:3865:52aa:28f7:65ec:fe21:6b22"]
------------------------------------------
名称: rmnet_data2
类型: Cellular
蜂窝制式: 5G
状态: Active
IPv4: ["10.84.138.208"]
IPv6: ["fe80::28f7:65ff:fe21:6baa%rmnet_data2","2406:895a:3865:52aa:28f7:34ff:fe21:6baa"]
------------------------------------------
通过过滤获取WIFI的IPv4地址
function getNetworkInfoPromise() {
// 可以通过结果回调封装成Promise,方便和异步业务集成
return new Promise<UtsNetworkInterfaceInfoList>((resolve, reject) => {
const networkUtil = new UtsNetworkUtil()
networkUtil.getNetworkInterfaceInfoList(
{
// 网络信息结果
onNetworkInfo(result : UtsNetworkInterfaceInfoList) {
resolve(result)
},
// 错误消息(可选)
onErrorStr(errorMsg : string) {
reject(errorMsg)
}
})
})
}
function getIPv4ForWifi() {
getNetworkInfoPromise()
.then((data : UtsNetworkInterfaceInfoList) => {
const wifiNetwork = data.networkInfoList.find((element) => element.networkType == "WiFi")
if (wifiNetwork) {
console.log(`WIFI的IPv4地址: ${wifiNetwork.ipv4Addresses[0]}`)
if (wifiNetwork.wifiSsidName != '') {
console.log(`WIFI名称: ${wifiNetwork.wifiSsidName }`)
console.log(`WIFI BSSID: ${wifiNetwork.wifiBssid }`)
console.log(`WIFI频率: ${wifiNetwork.wifiFrequencyClass }`)
}
}
}).catch((errStr : string) => {
console.log(`获取IP信息错误: ${errStr}`)
})
}
输出结果样例:
WIFI的IPv4地址: 192.168.102.29
WIFI名称: test-wifi-5G
WIFI BSSID: 1d:22:7e:8a:f8:4f
WIFI频率: 5G
使用isNetworkReachable检测目标主机IP是否网络可达(类似ping命令)。
常用于检查局域网内的IP宿主机网络是否可达可访问,是否已经离线(掉线)从局域网断开了。
注意:这个方法适用于局域网内设备(同一个路由器),如果是互联网IP主机,因为外部网络环境太复杂了,这个检测结果不一定准确
const networkUtil = new UtsNetworkUtil()
networkUtil.isNetworkReachable({
ip: "192.168.22.18", // 指定宿主机IP地址
// port: 53, // 可选,指定端口
// timeout: 3000, // 可选,指定检测的超时时间,单位毫秒
success(data) {
console.log(`目标IP主机网络检查结果: ${JSON.stringify(data)}`)
if (data.result == 'Reachable') {
console.log(`目标IP主机 ${data.ip} 网络可达`)
} else {
console.log(`目标IP主机 ${data.ip} 网络不可达`)
}
},
fail(errorMsg) {
console.log(`检查IP主机网络可达性出错: ${JSON.stringify(errorMsg)}`)
},
complete() {
console.log("检查IP主机网络可达性完成")
}
})
输出结果样例:
目标IP主机网络检查结果: {"port":53,"ip":"192.168.22.18","result":"Reachable","msg":"network is reachable"}
目标IP主机 192.168.22.18 网络可达
需要增加以下权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--如果需要获取WIFI名称还需要增加访问位置权限-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
需要增加以下权限
<key>NSLocalNetworkUsageDescription</key>
<string>用于检测网络状态</string>
<key>NSCarrierUsageDescription</key>
<string>需要获取蜂窝网络类型</string>
需要增加以下权限
"requestPermissions": [
{
"name": "ohos.permission.GET_NETWORK_INFO"
},
{
"name": "ohos.permission.GET_WIFI_INFO"
},
{
"name": "ohos.permission.INTERNET"
}
]