uniapp获取设备的IP地址(已踩坑,开箱即用)

**业务背景:**我司出现了一个同一个APP安装包需要在不同的设备跳转到不同的首页,我也是头一次遇到,于是只能通过设备的IP地址去判断了 ,当我踩坑完毕后发现挺简单的。

下面三个方法可以获取到无线网、以太网、以及国内公网的IP地址,任君选择亲测有效

限制:只限于APP环境包括平板并且设备是安卓,IOS就要另行想办法了(Objective-C代码)

步骤一 :首先去项目的源码配置里面添加如下代码(在manifest.jsonapp-plus下配置网络权限)

"permissions": {

"network": {

"description": "用于获取网络状态和IP地址"

}

},

我仍了两个地方,一个是在快应用上面和app里面我都写了,目前测试多写一个并不影响,如果你们测试了可以保留一个欢迎在评论区留言

步骤二:复制下面对应的函数就可以调用了(这个是无线网也就是WIFI模式的)

javascript 复制代码
function getWifiIp() {
    const MainActivity = plus.android.runtimeMainActivity();
    const Context = plus.android.importClass('android.content.Context');
    plus.android.importClass('android.net.wifi.WifiManager');
    plus.android.importClass('android.net.wifi.WifiInfo');
 
    const wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE);
    const wifiInfo = wifiManager.getConnectionInfo();
    const ipAddress = wifiInfo.getIpAddress();
    
    // 将Android的int型IP转换为点分十进制格式
    const wifiIp = (
        (ipAddress & 0xff) + '.' + 
        ((ipAddress >> 8) & 0xff) + '.' + 
        ((ipAddress >> 16) & 0xff) + '.' + 
        ((ipAddress >> 24) & 0xff)
    );
    return wifiIp;
}

// 调用示例

const wifiIp = getWifiIp();

console.log('Wi-Fi IP:', wifiIp);

以上就可以获取到 下面的IP地址了

方法二:这个是拿公网IP地址的还会返回你的地区位置

javascript 复制代码
uni.request({
    url: 'http://myip.ipip.net', // 国内可访问的IP查询服务
    success: (res) => {
        const publicIp = res.data.trim(); // 返回的IP可能是纯文本,需trim()处理
        console.log('公网IP:', publicIp);
    },
    fail: (err) => {
        console.error('获取公网IP失败:', err);
    }
});

方法三:这个是拿以太网的也就是网线

javascript 复制代码
function getLanIp() {
    const MainActivity = plus.android.runtimeMainActivity();
    const Context = plus.android.importClass('android.content.Context');
    plus.android.importClass('android.net.ConnectivityManager');

    const lanManager = MainActivity.getSystemService(Context.CONNECTIVITY_SERVICE);
    const lanInfo = lanManager.getLinkProperties(lanManager.getActiveNetwork());
    const lanIpAddresses = plus.android.invoke(lanInfo, 'getLinkAddresses');
    
    // 解析LinkAddresses对象(可能包含多个IP,需根据需求筛选)
    const lanIpStr = lanIpAddresses.toString();
    const lanIpArray = lanIpStr.split(',');
    const lanIp = lanIpArray[0].split('/')[0]; // 取第一个IP的地址部分
    return lanIp;
}

// 调用示例
const lanIp = getLanIp();
console.log('有线网络IP:', lanIp);

网络有很多坑

1.网络上说有用https://api.ipify.org?format=json这个地址、[http://pv.sohu.com/cityjson?ie=utf-8](http://pv.sohu.com/cityjson?ie=utf-8 "http://pv.sohu.com/cityjson?ie=utf-8") 还有搜狐这个我都没返回成功,还有就是一直返回128.0.0的

2.https://api.ipify.org?format=json这个地址可能是要翻墙才能

相关推荐
2501_9159090628 分钟前
iOS 26 文件管理实战,多工具组合下的 App 数据访问与系统日志调试方案
android·ios·小程序·https·uni-app·iphone·webview
盛夏绽放1 小时前
uni-app Vue 项目的规范目录结构全解
前端·vue.js·uni-app
2501_9159184115 小时前
掌握 iOS 26 App 运行状况,多工具协作下的监控策略
android·ios·小程序·https·uni-app·iphone·webview
知识分享小能手15 小时前
uni-app 入门学习教程,从入门到精通,uni-app基础扩展 —— 详细知识点与案例(3)
vue.js·学习·ui·微信小程序·小程序·uni-app·编程
2501_9159090618 小时前
iOS 混淆实战,多工具组合完成 IPA 混淆与加固(源码 + 成品 + 运维一体化方案)
android·运维·ios·小程序·uni-app·iphone·webview
赵庆明老师19 小时前
Uniapp微信小程序开发:EF Core 中级联删除
uni-app
Javashop_jjj19 小时前
三勾软件| 用SpringBoot+Element-UI+UniApp+Redis+MySQL打造的点餐连锁系统
spring boot·ui·uni-app
Q_Q5110082851 天前
python+uniapp基于微信小程序的心理咨询信息系统
spring boot·python·微信小程序·django·flask·uni-app·node.js
HuYi_code1 天前
WeChat 小程序下载文件实现
微信小程序·uni-app
00后程序员张1 天前
HTTPS 包 抓取与分析实战,从抓包到解密、故障定位与真机取证
网络协议·http·ios·小程序·https·uni-app·iphone