iOS: 如何获取ios设备的当前IP地址

简介:

有的时候,我们项目上线后,需要根据ip地址去统计不同地区的用户情况,此时IP地址的收取显得尤其重要,一般情况下,在用户登录时去获取用户的ip是准确的,当然实时追踪ip的变化而统计是更安全可靠的。

ip地址长度现在是有区别的,分为IPv4和IPv6.IPv4地址是类似 A.B.C.D 的格式,它是32位,用\".\"分成四段,用10进制表示;而IPv6地址类似X:X:X:X:X:X:X:X的格式,它是128位的,用\":\"分成8段,用16进制表示;可见,IPv6地址空间相对于IPv4地址有了极大的扩充。

IPv4是32位地址长度
IPv6是128位地址长度

 下面有两个方法,可供使用,如下:

方法一:使用一套C的方法去获取IP地址

IPAddress.h:声明文件

  View Code

IPAddress.c:实现文件

  View Code

将头文件导入ViewController.m中进行测试

  View Code

测试结果:

模拟器上连接wifi:

2016-07-15 16:19:49.187 IP_Test[5674:205359] Name: lo0  MAC: 00:00:00:00:00:00  IP: 127.0.0.1
2016-07-15 16:19:49.187 IP_Test[5674:205359] Name: en1  MAC: BC:54:36:CC:9C:96  IP: 192.168.0.109

 iphone上:

  连接wifi时:

2016-07-15 17:32:08.884 IP_Test[4813:2032752] Name: lo0  MAC: 00:00:00:00:00:00  IP: 127.0.0.1
2016-07-15 17:32:08.885 IP_Test[4813:2032752] Name: pdp_ip0  MAC: 00:00:00:00:00:70  IP: 10.204.102.136
2016-07-15 17:32:08.885 IP_Test[4813:2032752] Name: en0  MAC: 02:00:00:00:00:00  IP: 192.168.0.111

  使用4G时:

2016-07-15 17:32:44.163 IP_Test[4817:2033214] Name: lo0  MAC: 00:00:00:00:00:00  IP: 127.0.0.1
2016-07-15 17:32:44.164 IP_Test[4817:2033214] Name: pdp_ip0  MAC: 00:00:00:00:00:70  IP: 10.204.102.136

 

方法二:使用一套OC的方法去获取IP地址,该方法简单,能实时监测IP地址的变化

stackoverflow参考地址为:http://stackoverflow.com/questions/7072989/iphone-ipad-how-to-get-my-ip-address-programmatically

  View Code

测试结果:

模拟器上连接wifi:

复制代码
2016-07-15 16:23:35.864 IP_Test[5718:207702] {
    "awdl0/ipv6" = "fe80::e863:edff:fe93:a1c2";
    "en1/ipv4" = "192.168.0.109";
    "en1/ipv6" = "fe80::be54:36ff:fecc:9c96";
    "lo0/ipv4" = "127.0.0.1";
    "lo0/ipv6" = "fe80::1";
}
2016-07-15 17:24:12.877 IP_Test[4796:2028704] 0.0.0.0
复制代码

iphone上:

  连接wifi时:

复制代码
2016-07-15 17:29:22.526 IP_Test[4807:2031207] addresses: {
    "awdl0/ipv6" = "fe80::6c6a:24ff:fe91:39f7";
    "en0/ipv4" = "192.168.0.111";
    "en0/ipv6" = "fe80::42d:42b4:82a7:3de8";
    "lo0/ipv4" = "127.0.0.1";
    "lo0/ipv6" = "fe80::1";
    "pdp_ip0/ipv4" = "10.204.102.136";
}
2016-07-15 17:29:22.527 IP_Test[4807:2031207] 192.168.0.111
复制代码

  使用4G时:

复制代码
2016-07-15 17:24:12.875 IP_Test[4796:2028704] addresses: {
    "lo0/ipv4" = "127.0.0.1";
    "lo0/ipv6" = "fe80::1";
    "pdp_ip0/ipv4" = "10.204.102.136";
}
2016-07-15 17:24:12.877 IP_Test[4796:2028704] 10.204.102.136
复制代码

 

温馨提示:本人进一步做了简单的封装,封装成工具库,支持CocoaPods下载,源码在github上,欢迎大家下载,如果对您有帮助,请给我一个star吧

CocoaPods: pod 'IPTool','~> 1.0.0'

Github:https://github.com/xiayuanquan/IP_Test

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/5674063.html ,如需转载请自行联系原作者
相关文章
|
4月前
|
Android开发 iOS开发 UED
探索未来:Android与iOS在智能穿戴设备上的较量
随着科技的飞速进步,智能穿戴设备已经成为我们日常生活中不可或缺的一部分。本文将深入探讨两大操作系统——Android和iOS——在智能穿戴领域的竞争与发展,分析它们各自的优势与挑战,并预测未来的发展趋势。通过比较两者在设计哲学、生态系统、用户体验及创新技术的应用等方面的差异,揭示这场较量对消费者选择和市场格局的影响。 【7月更文挑战第31天】
52 0
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
是否有其他框架可以在iOS设备上进行机器学习?
是否有其他框架可以在iOS设备上进行机器学习?
52 1
|
6月前
|
存储 数据建模 iOS开发
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
100 1
|
6月前
|
定位技术 iOS开发
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
75 0
|
3月前
|
运维 网络安全 iOS开发
厉害!外国网络工程师用Ansible给思科IOS设备升级!
厉害!外国网络工程师用Ansible给思科IOS设备升级!
|
3月前
|
BI Linux 数据安全/隐私保护
忘了 iOS(iPad、IPhone) 设备上的「屏幕使用时间」密码怎么办?找回屏幕密码
忘了 iOS(iPad、IPhone) 设备上的「屏幕使用时间」密码怎么办?找回屏幕密码
119 0
|
4月前
|
Android开发 数据安全/隐私保护 iOS开发
探索未来:安卓与iOS在智能穿戴设备领域的较量
随着科技的飞速发展,智能穿戴设备已逐渐成为我们日常生活的一部分。从健康监测到通讯交流,它们正以惊人的速度改变着我们的生活方式。本文将深入探讨安卓和iOS这两大操作系统在智能穿戴领域的现状、竞争以及未来发展趋势,揭示它们如何通过创新技术满足用户需求,并预测未来可能的发展方向。
43 0
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
178 0
|
6月前
|
iOS开发
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
137 0
|
iOS开发 开发者
Xcode7.2真机调试iOS 9.3的设备
Xcode7.2真机调试iOS 9.3的设备
150 0