网上搜集到iOS开发中获取手机IDFA,手机序列号,设备名称,别名,分辨率等信息,这里做个总结

来源:互联网 发布:衣柜橱柜设计软件 编辑:程序博客网 时间:2024/05/01 07:48
下述函数中写入获取信息的代码
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions{}

获取分辨率:

CGRect rect_screen = [[UIScreen mainScreen] bounds];    CGFloat scale_screen= [[UIScreen mainScreen] scale];    CGSize size_screen = rect_screen.size;    NSLog(@"rect_screen:%@",NSStringFromCGRect(rect_screen));    NSLog(@"size_screen:%@",NSStringFromCGSize(size_screen));    NSLog(@"scale_screen:%f",scale_screen);    int width =(int)size_screen.width*scale_screen;    int height =(int)size_screen.height*scale_screen;    NSLog(@"%d",width);    NSLog(@"%d",height);    NSString *stringwidth = [NSString stringWithFormat:@"%d",width];    NSString *stringheight = [NSString stringWithFormat:@"%d",height];

获取IDFA:

NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];NSLog(@"IDFA: %@",adId);
获取手机序列号:
NSString* identifierNumber = [[UIDevice currentDevice] uniqueIdentifier];NSLog(@"手机序列号: %@",identifierNumber);
注:上面一个已经被苹果禁止了。建议使用uuid,IDFA代替。
获取手机别名:
NSString* userPhoneName = [[UIDevice currentDevice] name];NSLog(@"手机别名: %@", userPhoneName);
获取设备名称:
NSString* deviceName = [[UIDevice currentDevice] systemName];NSLog(@"设备名称: %@",deviceName );
获取手机系统版本:
NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];NSLog(@"手机系统版本: %@", phoneVersion);
获取当前应用名称:
NSString *appCurName = [infoDictionary objectForKey:@"CFBundleDisplayName"];NSLog(@"当前应用名称:%@",appCurName);
获取当前应用软件版本:
NSString *appCurVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];NSLog(@"当前应用软件版本:%@",appCurVersion);
获取当前应用版本号码:
NSString *appCurVersionNum = [infoDictionary objectForKey:@"CFBundleVersion"];NSLog(@"当前应用版本号码:%@",appCurVersionNum);
获取当前日期,时间:
NSDate *currentDate = [NSDate date];//获取当前时间,日期    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];    NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];     [dateFormatter1 setDateFormat:@"YYYY-MM-dd"];    [dateFormatter2 setDateFormat:@"hh:mm:ss"];NSString *dateString = [dateFormatter1 stringFromDate:currentDate];NSString *timeString = [dateFormatter2 stringFromDate:currentDate];NSLog(@"dateString:%@",dateString);NSLog(@"timeString:%@",timeString);
获取当前手机型号时需要自己写个方法,即iphoneType,调用即可:
NSString* phoneModel = [UnityAppController iphoneType];NSLog(@"当前手机型号:%@",phoneModel);

iphoneType函数写成类方法,所以我调用时使用的是方法所在文件名(UnityAppController)+方法(iphoneType)来调用。
iphoneType方法如下:
+ (NSString *)iphoneType {    struct utsname systemInfo;        uname(&systemInfo);        NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];        if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G";        if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";        if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";        if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4";        if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4";        if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4";        if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";        if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5";        if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5";        if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c";        if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c";        if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s";        if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s";        if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";        if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6";        if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";        if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";        if ([platform isEqualToString:@"iPhone8,4"]) return @"iPhone SE";        if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";        if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";        if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";        if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";        if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G";        if ([platform isEqualToString:@"iPad1,1"]) return @"iPad 1G";        if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2";        if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2";        if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2";        if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2";        if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini 1G";        if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini 1G";        if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini 1G";        if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3";        if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3";        if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3";        if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4";        if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4";        if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4";        if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air";        if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air";        if ([platform isEqualToString:@"iPad4,3"]) return @"iPad Air";        if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini 2G";        if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini 2G";        if ([platform isEqualToString:@"iPad4,6"]) return @"iPad Mini 2G";        if ([platform isEqualToString:@"i386"])   return @"iPhone Simulator";        if ([platform isEqualToString:@"x86_64"])  return @"iPhone Simulator";        return platform;    }
获取ip地址时与上述类似,写了一个获取ip的方法:
+ (NSString *)getIPAddress {    NSString *address = @"error";    struct ifaddrs *interfaces = NULL;    struct ifaddrs *temp_addr = NULL;    int success = 0;    // retrieve the current interfaces - returns 0 on success    success =getifaddrs(&interfaces);    if (success == 0) {        // Loop through linked list of interfaces        temp_addr = interfaces;        while(temp_addr != NULL) {            if(temp_addr->ifa_addr->sa_family == AF_INET) {                // Check if interface is en0 which is the wifi connection on the iPhone                if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {                    // Get NSString from C String                    address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];                }            }            temp_addr = temp_addr->ifa_next;        }    }    // Free memory    freeifaddrs(interfaces);    return address;}
然后调用:
NSString* ipAdress = [UnityAppController getIPAddress];NSLog(@"ipAdress:%@",ipAdress);
但是!!!这个方法获取的是局域网的ip;想要获取外网ip可以使用:
- (void)urlRequestOperation{    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{        NSString *URLTmp1 = @"http://1212.ip138.com/ic.asp";        NSString *URLTmp = [URLTmp1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];        NSData * resData = [NSData dataWithContentsOfURL:[NSURL URLWithString:URLTmp]];        dispatch_async(dispatch_get_main_queue(), ^{            if (resData) {                //系统自带JSON解析                NSStringEncoding gbkEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);                //您的IP是:[122.222.122.22] 来自:上海市某某区 某某运营商                NSString *str3 = [[NSString alloc] initWithData:resData encoding:gbkEncoding];                NSLog(@"%@",str3);            }        });    });}
但是!!!获取的字符串str3里包含了整个网页的信息,所以需要截取ip的部分。
 所以获取外网ip要用:
NSError *error;NSURL *ipURL = [NSURL URLWithString:@"http://ifconfig.me/ip"];NSString *ip = [NSString stringWithContentsOfURL:ipURL encoding:NSUTF8StringEncoding error:&error];

最后最后,记得加上需要的头文件,这里提供几个:
#import <UIKit/UIKit.h>#import <sys/utsname.h>#import <AdSupport/AdSupport.h>#import <ifaddrs.h>#import <arpa/inet.h>
0 0
原创粉丝点击