// 手机序列号
NSString* identifierNumber = [[UIDevice currentDevice] uniqueIdentifier];
NSLog(@"手机序列号: %@",identifierNumber);
长期以来,iOS程序员们使用UIDevice.uniqueIdentifier作为追踪单一用户(设备)的标识。在iOS5.0 SDK中,我们可以看到uniqueIdentifier已经被注明为Deprecated的了,但是官方文档也提供了建议的替代方案,也就是本文的第一种替代方案。
方案一:
使用UUID,根据官方文档的说法:
Do not use theuniqueIdentifierproperty. To create a unique identifier specific to your app, you can call theCFUUIDCreatefunction to create a UUID, and write it to thedefaultsdatabase using theNSUserDefaultsclass.
我们应该使用CFUUIDCreate来创建一个UUID作为该用户(设备)在本应用的唯一标识,并且结合NSUserDefaults在第一次创建之后,一直使用该该UUID。稍后给出代码链接…
方案二:
使用MAC地址(网卡物理地址)
参考链接:http://iphonedevelopertips.com/device/determine-mac-address.html
但是使用MAC地址与使用uniqueIdentifier没有本质区别,还是违背了保护用户隐私的初衷,并且苹果未来完全可以采取相同的措施。
方案三:
使用第三方的服务,例如OpenFeint宣布的OFUID,OpenUDID,或者只允许注册会员使用,结合会员系统追踪用户。
// 手机别名: 用户定义的名称
NSString* userPhoneName = [[UIDevice currentDevice] name];
NSLog(@"手机别名: %@", userPhoneName);
// 设备名称
NSString* deviceName = [[UIDevice currentDevice] systemName];
NSLog(@"设备名称: %@",deviceName );
// 手机系统版本
NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];
NSLog(@"手机系统版本: %@", phoneVersion);
// 手机型号
NSString* phoneModel = [[UIDevice currentDevice] model];
NSLog(@"手机型号: %@",phoneModel );
// 地方型号(国际化区域名称)
NSString* localPhoneModel = [[UIDevice currentDevice] localizedModel];
NSLog(@"国际化区域名称: %@",localPhoneModel );
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
// 当前应用名称
NSString *appCurName = [infoDictionary objectForKey:@"CFBundleDisplayName"];
NSLog(@"当前应用名称:%@",appCurName);
// 当前应用软件版本 比如:1.0.1
NSString *appCurVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
NSLog(@"当前应用软件版本:%@",appCurVersion);
// 当前应用版本号码 int类型
NSString *appCurVersionNum = [infoDictionary objectForKey:@"CFBundleVersion"];
NSLog(@"当前应用版本号码:%@",appCurVersionNum);
结果:
2012-10-19 14:07:47.622 myDemo[5779:707] 手机序列号: 6685c75e34104be0b04c6ceb72985dc381f0f746
2012-10-19 14:07:47.624 myDemo[5779:707] 手机别名: “xxx”的 iPhone
2012-10-19 14:07:47.627 myDemo[5779:707] 设备名称: iPhone OS
2012-10-19 14:07:47.629 myDemo[5779:707] 手机系统版本: 10.1
2012-10-19 14:07:47.641 myDemo[5779:707] 手机型号: iPhone
2012-10-19 14:07:47.642 myDemo[5779:707] 国际化区域名称: iPhone
2012-10-19 14:07:47.643 myDemo[5779:707] 当前应用名称:myDemo
2012-10-19 14:07:47.645 myDemo[5779:707] 当前应用软件版本:1.0.1
2012-10-19 14:07:47.646 myDemo[5779:707] 当前应用版本号码:101
// 手机类型判断
// 需要导入头文件:#import <sys/utsname.h>
- (NSString*)iphoneType {
structutsnamesystemInfo;
uname(&systemInfo);
NSString*platform = [NSStringstringWithCString:systemInfo.machineencoding:NSASCIIStringEncoding];
if([platformisEqualToString:@"iPhone1,1"])return@"iPhone 2G";
if([platformisEqualToString:@"iPhone1,2"])return@"iPhone 3G";
if([platformisEqualToString:@"iPhone2,1"])return@"iPhone 3GS";
if([platformisEqualToString:@"iPhone3,1"])return@"iPhone 4";
if([platformisEqualToString:@"iPhone3,2"])return@"iPhone 4";
if([platformisEqualToString:@"iPhone3,3"])return@"iPhone 4";
if([platformisEqualToString:@"iPhone4,1"])return@"iPhone 4S";
if([platformisEqualToString:@"iPhone5,1"])return@"iPhone 5";
if([platformisEqualToString:@"iPhone5,2"])return@"iPhone 5";
if([platformisEqualToString:@"iPhone5,3"])return@"iPhone 5c";
if([platformisEqualToString:@"iPhone5,4"])return@"iPhone 5c";
if([platformisEqualToString:@"iPhone6,1"])return@"iPhone 5s";
if([platformisEqualToString:@"iPhone6,2"])return@"iPhone 5s";
if([platformisEqualToString:@"iPhone7,1"])return@"iPhone 6 Plus";
if([platformisEqualToString:@"iPhone7,2"])return@"iPhone 6";
if([platformisEqualToString:@"iPhone8,1"])return@"iPhone 6s";
if([platformisEqualToString:@"iPhone8,2"])return@"iPhone 6s Plus";
if([platformisEqualToString:@"iPhone8,4"])return@"iPhone SE";
if([platformisEqualToString:@"iPhone9,1"])return@"iPhone 7";
if([platformisEqualToString:@"iPhone9,2"])return@"iPhone 7 Plus";
if([platformisEqualToString:@"iPod1,1"])return@"iPod Touch 1G";
if([platformisEqualToString:@"iPod2,1"])return@"iPod Touch 2G";
if([platformisEqualToString:@"iPod3,1"])return@"iPod Touch 3G";
if([platformisEqualToString:@"iPod4,1"])return@"iPod Touch 4G";
if([platformisEqualToString:@"iPod5,1"])return@"iPod Touch 5G";
if([platformisEqualToString:@"iPad1,1"])return@"iPad 1G";
if([platformisEqualToString:@"iPad2,1"])return@"iPad 2";
if([platformisEqualToString:@"iPad2,2"])return@"iPad 2";
if([platformisEqualToString:@"iPad2,3"])return@"iPad 2";
if([platformisEqualToString:@"iPad2,4"])return@"iPad 2";
if([platformisEqualToString:@"iPad2,5"])return@"iPad Mini 1G";
if([platformisEqualToString:@"iPad2,6"])return@"iPad Mini 1G";
if([platformisEqualToString:@"iPad2,7"])return@"iPad Mini 1G";
if([platformisEqualToString:@"iPad3,1"])return@"iPad 3";
if([platformisEqualToString:@"iPad3,2"])return@"iPad 3";
if([platformisEqualToString:@"iPad3,3"])return@"iPad 3";
if([platformisEqualToString:@"iPad3,4"])return@"iPad 4";
if([platformisEqualToString:@"iPad3,5"])return@"iPad 4";
if([platformisEqualToString:@"iPad3,6"])return@"iPad 4";
if([platformisEqualToString:@"iPad4,1"])return@"iPad Air";
if([platformisEqualToString:@"iPad4,2"])return@"iPad Air";
if([platformisEqualToString:@"iPad4,3"])return@"iPad Air";
if([platformisEqualToString:@"iPad4,4"])return@"iPad Mini 2G";
if([platformisEqualToString:@"iPad4,5"])return@"iPad Mini 2G";
if([platformisEqualToString:@"iPad4,6"])return@"iPad Mini 2G";
if([platformisEqualToString:@"i386"])return@"iPhone Simulator";
if([platformisEqualToString:@"x86_64"])return@"iPhone Simulator";
returnplatform;
}
网友评论