iOS获取OpenUUID

#pragma mark - 获取MAC地址
+ (NSString *)obtainMacAddress {
    int                    mib[6];
    size_t                 len;
    char                   *buf;
    unsigned char          *ptr;
    struct if_msghdr       *ifm;
    struct sockaddr_dl     *sdl;

    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 *)buf;
    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)];
    free(buf);

    return [outstring uppercaseString];
}

#pragma mark - 获取设备UUID
- (void)obtainDeviceOpenUUID {
    if (![kUserDefaults objectForKey:kOpenUUIDKey]) {
        NSString *uuid = nil;
        if ([[[UIDevice currentDevice] systemVersion] floatValue] < 6.0) {
            uuid = [NSString obtainMacAddress]; // 6.0以前用MAC地址作为UID
        } else {
            // identifierForVendor 6.0后可用
            uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
        }
        [kUserDefaults setObject:uuid forKey:kOpenUUIDKey];
    }
    return;
}
时间: 2024-11-10 00:24:32

iOS获取OpenUUID的相关文章

iOS获取和监测设备基本信息——UIDevice的使用

iOS获取和监测设备基本信息--UIDevice的使用 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 //获取当前设备单例 + (UIDevice *)currentDevice; //获取当前设备名称  @property(nonatomic,readonly,strong) NSString    *name;              // e.g. "My iPhone" //获取当前设备模式 @prope

IOS获取通讯录联系人信息

IOS获取系统通讯录联系人信息 一.权限注册 随着apple对用户隐私的越来越重视,IOS系统的权限设置也更加严格,在获取系统通讯录之前,我们必须获得用户的授权.权限申请代码示例如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31     //这个变量用于记录授权是否成功,即用户是否允许我们访问通讯录     int __block tip=0;     //声明一个通讯

ios-哪位大虾能够解决:IOS获取是否飞行模式状态,不能用reachability

问题描述 哪位大虾能够解决:IOS获取是否飞行模式状态,不能用reachability 应用场景是获取苹果手机是否处于飞行模式状态,但不能通过reachability来判断是否只有网络状态,用networkcontroller和coretelephony两个判断能够解决大部分问题,但发现有4个版本的操作系统返回不正确,因此无法通用,不知道如何是好了,有哪位大虾出手相助,谢谢!不行的4个IOS版本分别是:6.1.3.7.0.4.7.1.1.8.3 解决方案 楼主解决了吗,同求啊

设备-ios 获取蓝牙配对信息

问题描述 ios 获取蓝牙配对信息 有没有人做过IOS BLE 相关的应用,有一个问题,在IOS app里面怎么获取系统setting里面已经配对过的蓝牙设备的信息呢? 解决方案 http://www.raywenderlich.com/52080/introduction-core-bluetooth-building-heart-rate-monitor 解决方案二: 参考这篇老外的博客 介绍的是iphone通过蓝牙链接一台心跳检测仪,有详细介绍和代码 解决方案三: 参考这篇老外的博客 介绍

今天iOS获取不了群信息,安卓可以

问题描述 今天iOS获取不了群信息,自动登录也比平常慢XDHttpManager::httpWithApiAfterAppkey:httpMethod:headers:parameters:timeout:retryCount:error: --- error: 连接建立失败. [[EaseMob sharedInstance].chatManager asyncFetchGroupInfo:_chatGroup.groupId completion:^(EMGroup *group, EMEr

ipa打包-iOS 获取手机时间错误

问题描述 iOS 获取手机时间错误 ipa打包后在越狱的手机上安装后,我选择的时间是2013,他发送到服务器的时间就是2012年,少一年,怎么回事啊

详解iOS获取通讯录的4种方式_IOS

本文实例为大家分享了iOS获取通讯录的4种方式,供大家参考,具体内容如下 使用场景 一些App通过手机号码来推荐好友,如 微博.支付宝 首先客户端会获取通讯录中的所有手机号然后将这些手机号提交到App服务器中,服务器会查找每个手机号对应的App账号如QQ号码返回到客户端,然后客户端根据服务器返回的账号列表来推荐好友. 获取联系人方式 方案一:AddressBookUI.framework框架 提供了联系人列表界面.联系人详情界面.添加联系人界面等 一般用于选择联系人 方案二:AddressBoo

IOS获取缓存文件的大小并清除缓存文件的方法_IOS

移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类app的标配功能. 今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取.清除缓存文件的实现. 1. 获取缓存文件的大小 -( float )readCacheSize { NSString *cachePath = [NSSearchPathForDirectoriesInDomains (N

iOS获取当前设备型号等信息(全)包含iPhone7和iPhone7P_IOS

#include <sys/types.h> #include <sys/sysctl.h> //获得设备型号 + (NSString *)getCurrentDeviceModel { int mib[2]; size_t len; charchar *machine; mib[0] = CTL_HW; mib[1] = HW_MACHINE; sysctl(mib, 2, NULL, &len, NULL, 0); machine = malloc(len); sysc