• 获取UIDevice的uniqueIdentifier替代方法


    1.通过调用CFFUUIDCreate函数来生成机器唯一标识符,但每次调用以下函数返回的字符串都不一样,所以第一次调用后需把该字符串存储起来。这是官方API的建议方法

    - (NSString *) uniqueString

    {

    CFUUIDRef unique = CFUUIDCreate(kCFAllocatorDefault);

    NSString *result = [(NSString *)CFUUIDCreateString(kCFAllocatorDefault, unique) autorelease];

    CFRelease(unique);

    return result;

    }


    2.由于机器的mac地址都不一样,所以可通过获取mac地址后再进行md5加密处理后返回的字符串作为唯一标识码

    - (NSString *) macaddress{

        

        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, 6NULL, &len, NULL0) < 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, NULL0) < 0) {

            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;

    }


    - (NSString *) uniqueGlobalDeviceIdentifier{

        NSString *macaddress = [[UIDevice currentDevicemacaddress];

        NSString *uniqueIdentifier = [macaddress stringFromMD5];

        

        return uniqueIdentifier;

    }


    NSString类别

    @implementation NSString(MD5Addition)


    - (NSString *) stringFromMD5{

        

        if(self == nil || [self length] == 0)

            return nil;

        

        const char *value = [self UTF8String];

        

        unsigned char outputBuffer[CC_MD5_DIGEST_LENGTH];

        CC_MD5(value, strlen(value), outputBuffer);

        

        NSMutableString *outputString = [[NSMutableString allocinitWithCapacity:CC_MD5_DIGEST_LENGTH * 2];

        for(NSInteger count = 0; count < CC_MD5_DIGEST_LENGTH; count++){

            [outputString appendFormat:@"%02x",outputBuffer[count]];

        }

        

        return [outputString autorelease];

    转http://blog.163.com/ray_jun/blog/static/1670536422011102744836300/ 

    }

  • 相关阅读:
    IIS部署Asp.Net Core 项目运行时报错,处理程序“aspNetCore”在其模块列表中有一个错误模块“AspNetCoreModuleV2"
    Linux Mysql5.7.22安装
    Nginx初体验
    asp.net core Csc任务不支持SharedCompilationId参数,请确认改参数存在于此任务中,并且是可设置的公共实例属性
    【Node.js 】Express框架
    【Node.js】 初体验
    Mongodb 配置
    【C#】Windows服务守护并发送邮件通知
    新建【Git】仓库后给使用者授权
    Git提交修改的代码出现提交不上去
  • 原文地址:https://www.cnblogs.com/likwo/p/2798571.html
Copyright © 2020-2023  润新知