当前位置: 首页 > news >正文

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

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

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

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

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

"permissions": {
        "network": {
            "description": "用于获取网络状态和IP地址"
        }
    },

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

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

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地址的还会返回你的地区位置

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);}
});

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

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 还有搜狐这个我都没返回成功,还有就是一直返回128.0.0的 
2.https://api.ipify.org?format=json这个地址可能是要翻墙才能

http://www.dtcms.com/a/411047.html

相关文章:

  • 怎么做地方门户网站哈尔滨市建筑企业管理站
  • WGCLOUD存在默认账号密码admin/111111
  • FGFR3 K650Q突变的研究进展
  • 最小二乘问题详解1:线性最小二乘
  • vue静态资源优化
  • MiniCPM-V 4.5 视觉模型使用指南
  • 中国建设银行集团网站简单旅游网站开发
  • 口碑好的秦皇岛网站建设哪里有网页设计素材推荐
  • 《道德经》第三章
  • 不同环境(跨集群和同集群)下的Jenkins与Kubernetes集群连接配置
  • 新纪实网站建设淮安网站seo
  • 【序列晋升】45 Spring Data Elasticsearch 实战:3 个核心方案破解索引管理与复杂查询痛点,告别低效开发
  • 国外做的比较的ppt网站有哪些方面设计师入驻平台
  • 济宁高端网站建设公司网站优势
  • PyTorch 实现 CIFAR - 10 图像分类
  • 南平市住房和城乡建设局网站如何做一间公司的网站
  • 哪些网站的登陆界面做的好看163企业邮箱登陆
  • 如何从头开始启动天机学堂项目(个人记录、详细图解)
  • lesson68:JavaScript 操作 HTML 元素、属性与样式全指南
  • 2017年用什么语言做网站制作广告的软件
  • Redis基础篇——集成客户端
  • 不错的免费网站建设衡水如何做企业网站
  • MySQL 面试题及详细解答(二)
  • 「Java EE开发指南」用MyEclipse开发的EJB开发工具(一)
  • 四川微信网站建设天津市规划局官方网站建设项目
  • 移动服务器建设的电影网站云服务器网站解析
  • Java 反射与 MyBatis:ORM 框架的 “灵魂基石”
  • 网站主机教程wordpress 文章点赞插件
  • 网站图片展示形式中国最好的网站建设有哪些
  • 拉取postgresql 18.0 docker镜像并运行容器