iOS如何获取手机一直在获取ip地址的Mac地址

没有更多推荐了,
不良信息举报
举报内容:
iOS开发:获取设备的MAC地址
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!iOS开发的过程中怎么获取手机的MAC地址呢? - 简书
iOS开发的过程中怎么获取手机的MAC地址呢?
iOS开发的过程中怎么获取手机的MAC地址呢?首先导入头文件:#import &sys/sysctl.h&#import &net/if.h&#import &net/if_dl.h&#pragma mark -- 获取mac地址- (NSString *) macaddress{int
mib[6];size_char
*unsigned char
*struct if_msghdr
*struct sockaddr_dl
*mib[0] = CTL_NET;mib[1] = AF_ROUTE;mib[2] = 0;mib[3] = AF_LINK;mib[4] = NET_RT_IFLIST;if ((mib[5] = if_nametoindex("en0")) == 0) {printf("Error: if_nametoindex error/n");return NULL;}if (sysctl(mib, 6, NULL, &len, NULL, 0) & 0) {printf("Error: sysctl, take 1/n");return NULL;}if ((buf = malloc(len)) == NULL) {printf("Could not allocate memory. error!/n");return NULL;}if (sysctl(mib, 6, buf, &len, NULL, 0) & 0) {printf("Error: sysctl, take 2");return NULL;}ifm = (struct if_msghdr *)sdl = (struct sockaddr_dl *)(ifm + 1);ptr = (unsigned char *)LLADDR(sdl);NSString *outstring = [NSString stringWithFormat:@"%02x:%02x:%02x:%02x:%02x:%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];//
NSString *outstring = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];NSLog(@"outString:%@", outstring);free(buf);return [outstring uppercaseString];}
以下代码来源于网络 获取设备型号 NSString *deviceName = [self getDeviceName]; NSLog(@&设备型号--&%@&,deviceName); 获取iPhone名称 NSString *iPhoneName=[UIDevice c...
// 这个方法后面会列出来 NSString *deviceName = [self getDeviceName]; NSLog(@&设备型号--&%@&, deviceName); NSString *iPhoneName = [UIDevice currentDevic...
链接:http://www.jianshu.com/p/b23016bb97af 为了统计用户信息、下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述一下各种信息的获取方式: GitHub:https://github.com/PengfeiWang666/...
1、禁止手机睡眠[UIApplication sharedApplication].idleTimerDisabled = YES; 2、隐藏某行cell (CGFloat)tableView:(UITableView *)tableView heightForRowAtI...
1、禁止手机睡眠 [UIApplication sharedApplication].idleTimerDisabled = YES; 2、隐藏某行cell - (CGFloat)tableView:(UITableView *)tableView heightForRow...
RAM: 寄存器(Registers)速度最快的存储场所,因为它存在处理器内部,在程序中无法控制 栈(Stack)存放基本数据类型及对象的引用,但对象本身不存放在栈中,而是存在堆中。 堆(Heap)用来存放由new创建的对象和数组。在堆分配的内存,由java虚拟机的自动gc...
陕西安平保电子商务有限公司于日成立,仅仅两个月,安平保公司为社会提交了一份精彩的答卷。成立之初,安平保作为一家电子商务公司泯然于茫茫互联网公司中,但一个好的项目让安平保电子商务有限公司脱颖而出,成为了陕西车险业闪闪发光的新秀。 陕西安平保电子商务有限公司...
他是时空夹缝中生活的人,他是东野笔下的时间旅行者,他穿越多年,寻找那时那地同样年轻的生身父亲,陪他度过一段颓废不堪的时光,并引领他走上不留遗憾的&正经人&的道路。也许关于自己来自未来的解释那时的父亲并不能理解,但他也不求理解,他只是想告诉父亲:能来到这个世界,我就很幸福。幸...
图文 / 白梨安 离开成都之前,我从来没有想过有一天会离开,所以很排斥这座总人数大约2000的北方村庄。 之所以来到这里,是因为这里是我丈夫的故乡。而我们刚刚有了第一个孩子,人生旅途进入转折点,无论是他还是我,都需要一段不短暂的过渡期。 思来想去,期间无数次协商,最后基于利...iOS如何获取手机的Mac地址
转载 &发布时间:日 16:37:25 & 作者:showhilllee
这篇文章主要为大家详细介绍了iOS获取手机的Mac地址的多种方法,感兴趣的小伙伴们可以参考一下
首先说明下,下面两种方法均可以获得手机的mac地址,但是有个限制,是在iOS7以下才可以获得。iOS7以后苹果对于sysctl和ioctl进行了技术处理,MAC地址返回的都是02:00:00:00:00:00。
官方文档上这样写的:
"Twolow-level networking APIs that used to return a MAC address now return thefixed value 02:00:00:00:00:00. The APIs in question are sysctl(NET_RT_IFLIST) and ioctl(SIOCGIFCONF). Developers using the value of the MAC address should migrate toidentifiers such as -[UIDevice identifierForVendor].This change affects all apps running on iOS 7”。
所以在iOS7以后想要获取设备的唯一标示Mac地址已经不行了,只能用其他的代替。
下面说下两种方式:
都需要导入几个头文件
#include &sys/sysctl.h&
#include &net/if.h&
#include &net/if_dl.h&
// Return the local MAC addy
// Courtesy of FreeBSD hackers email list
// Accidentally munged during previous update. Fixed thanks to mlamb.
- (NSString *) macaddress
unsigned char
struct if_msghdr
struct sockaddr_dl *
mib[0] = CTL_NET;
mib[1] = AF_ROUTE;
mib[2] = 0;
mib[3] = AF_LINK;
mib[4] = NET_RT_IFLIST;
if ((mib[5] = if_nametoindex("en0")) == 0) {
printf("Error: if_nametoindex error/n");
return NULL;
if (sysctl(mib, 6, NULL, &len, NULL, 0) & 0) {
printf("Error: sysctl, take 1/n");
return NULL;
if ((buf = malloc(len)) == NULL) {
printf("Could not allocate memory. error!/n");
return NULL;
if (sysctl(mib, 6, buf, &len, NULL, 0) & 0) {
printf("Error: sysctl, take 2");
return NULL;
ifm = (struct if_msghdr *)
sdl = (struct sockaddr_dl *)(ifm + 1);
ptr = (unsigned char *)LLADDR(sdl);
NSString *outstring = [NSString stringWithFormat:@"%02x:%02x:%02x:%02x:%02x:%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];
NSString *outstring = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];
NSLog(@"outString:%@", outstring);
free(buf);
return [outstring uppercaseString];
- (NSString *)getMacAddress
mgmtInfoBase[6];
*msgBuffer = NULL;
unsigned char
macAddress[6];
struct if_msghdr
*interfaceMsgS
struct sockaddr_dl *socketS
*errorFlag = NULL;
// Setup the management Information Base (mib)
mgmtInfoBase[0] = CTL_NET;
// Request network subsystem
mgmtInfoBase[1] = AF_ROUTE;
// Routing table info
mgmtInfoBase[2] = 0;
mgmtInfoBase[3] = AF_LINK;
// Request link layer information
mgmtInfoBase[4] = NET_RT_IFLIST; // Request all configured interfaces
// With all configured interfaces requested, get handle index
if ((mgmtInfoBase[5] = if_nametoindex("en0")) == 0)
errorFlag = @"if_nametoindex failure";
// Get the size of the data available (store in len)
if (sysctl(mgmtInfoBase, 6, NULL, &length, NULL, 0) & 0)
errorFlag = @"sysctl mgmtInfoBase failure";
// Alloc memory based on above call
if ((msgBuffer = malloc(length)) == NULL)
errorFlag = @"buffer allocation failure";
// Get system information, store in buffer
if (sysctl(mgmtInfoBase, 6, msgBuffer, &length, NULL, 0) & 0)
errorFlag = @"sysctl msgBuffer failure";
// Befor going any further...
if (errorFlag != NULL)
NSLog(@"Error: %@", errorFlag);
return errorF
// Map msgbuffer to interface message structure
interfaceMsgStruct = (struct if_msghdr *) msgB
// Map to link-level socket structure
socketStruct = (struct sockaddr_dl *) (interfaceMsgStruct + 1);
// Copy link layer address data in socket structure to an array
memcpy(&macAddress, socketStruct-&sdl_data + socketStruct-&sdl_nlen, 6);
// Read from char array into a string object, into traditional Mac address format
NSString *macAddressString = [NSString stringWithFormat:@"%02x:%02x:%02x:%02x:%02x:%02x",
macAddress[0], macAddress[1], macAddress[2],
macAddress[3], macAddress[4], macAddress[5]];
NSLog(@"Mac Address: %@", macAddressString);
// Release the buffer memory
free(msgBuffer);
return macAddressS
以上就是iOS获取手机的Mac地址的两种方法,希望对大家的学习有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具iOS开发中获取MAC地址方法 - 简书
iOS开发中获取MAC地址方法
既然你来这里,就知道要干啥了,直接上码:
获取iOS中的MAC地址:
- (NSString *)getMacAddress {
int mib[6];
unsigned char *
struct if_msghdr *
struct sockaddr_dl *
mib[0] = CTL_NET;
mib[1] = AF_ROUTE;
mib[2] = 0;
mib[3] = AF_LINK;
mib[4] = NET_RT_IFLIST;
if ((mib[5] = if_nametoindex("en0")) == 0) {
printf("Error: if_nametoindex error/n");
return NULL;
if (sysctl(mib, 6, NULL, &len, NULL, 0) & 0) {
printf("Error: sysctl, take 1/n");
return NULL;
if ((buf = malloc(len)) == NULL) {
printf("Could not allocate memory. error!/n");
return NULL;
if (sysctl(mib, 6, buf, &len, NULL, 0) & 0) {
free(buf);
printf("Error: sysctl, take 2");
return NULL;
ifm = (struct if_msghdr *)
sdl = (struct sockaddr_dl *)(ifm + 1);
ptr = (unsigned char *)LLADDR(sdl);
// MAC地址带冒号
// NSString *outstring = [NSString stringWithFormat:@"%02x:%02x:%02x:%02x:%02x:%02x", *ptr, *(ptr+1), *(ptr+2),
// *(ptr+3), *(ptr+4), *(ptr+5)];
// MAC地址不带冒号
NSString *outstring = [NSString
stringWithFormat:@"%02x%02x%02x%02x%02x%02x", *ptr, *(ptr + 1), *(ptr + 2), *(ptr + 3), *(ptr + 4), *(ptr + 5)];
free(buf);
return [outstring uppercaseString];
Swift版本点击这里欢迎加入QQ群交流:
最新更新日期:17-11-01 About A curated list of iOS objective-C ecosystem. How to Use Simply presscommand+F+&xxx...
此文章转自github:https://github.com/Tim9Liu9/TimLiu-iOS 介绍 这是一个用于iOS开发的各种开源库、开源资料、开源技术等等的索引库. 具体内容 ============================= 版本管理@ 依赖管理@ G...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
用到的组件1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SDWebImage多个缩略图缓存组件 UICKeyChainStore存放用户账号密码组件 Reachability监测网络状态 DateTools友好...
只是在我看来,“夏洛特烦恼”并不算一个好片,他东拼西凑的剧情也是徒然添加了大量耳熟能详的桥段而已。但就是这么个片子,却不经意的挖出一些我内心的恐惧,我不想谈什么过于装逼的周公梦蝶蝶梦周公之类的话题,虽然三梦(黄粱、南柯、梦蝶)即是这故事的骨架,但那些在我的老庄哲学篇讲...
我是一个习惯于沉默的人,遇到什么烦心事就自己藏在心里,不想告诉他人,即便是朋友。时间长了,就越发的心烦,我想要试着做出改变了,可这个过程并不容易。就在这时,我刚好遇到了你,刚好让我做了些许改变的你。 放假的第一天,我漫无目的地翻着手机,一条消息突然弹了出来:是否添加对方为好...
1. 时间:6:00-6:30晨间思,讯飞语音,4430字 反思:又是重蹈覆辙,闹钟响的早,但是起床比较晚。躺在沙发上完成晨间思记录,结果一放松,居然在沙发上睡过去了,这是啥节奏啊。 2. 状态:起床后的状体不好,但晨间思说话还是较为流畅,只是说了不到半个小时就累了。早起的...
《打开餐巾纸》 是的,我们需要有足够的智力作出最好的选择;是的,我们需要一定的速度以保证按时达到目标;是的,我们也需要足够的力量保证一切能够顺利进行。寻找解决方案这个最难的部分只取决于我们的两种能力:一是观察面前是什么,二是想象出尽可能多的办法来处理问题。 不成文规则三的言...
不知不觉参加田宝文章健身房已有半月,收获颇丰,关于写作的也有一些疑惑和思考,故这下此文记录自己的总结和反思。 1.阅读量和点赞量重要吗? 第一阶段的写作者应该是蛮重视阅读量的,希望点赞的人越多越开心。这是一个入门的过程,希望被关注,被评价,这会促使作者更用心去写作。这是一个...

我要回帖

更多关于 js获取手机mac地址 的文章

 

随机推荐