如何获取ios系统信息
2015-12-30 10:58
585 查看
主要研究UIDevice 类。
//获取设备id号
UIDevice *device = [UIDevice currentDevice];//创建设备对象
NSString *deviceUID = [[NSString alloc] initWithString:[device uniqueIdentifier]];
NSLog(@"%@",deviceUID); // 输出设备id
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];//获取软件版本号
NSString *systemVersion = [[UIDevice currentDevice] systemVersion];//系统版本
NSString *systemModel = [[UIDevice currentDevice] model];//是iphone 还是 ipad
NSDictionary *dic = [[NSBundle mainBundle] infoDictionary];//获取info-plist
NSString *appName = [dic objectForKey:@"CFBundleIdentifier"];//获取Bundle identifier
NSString *appVersion = [dic valueForKey:@"CFBundleVersion"];//获取Bundle Version
NSDictionary *userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:
deviceID, @"deviceID",
systemVersion, @"systemVersion",
systemModel, @"systemModel",
appName, @"appName",
appVersion, @"appVersion",nil];
获取UUID并存储
UDID被弃用,使用UUID来作为设备的唯一标识。获取到UUID后,如果用NSUserDefaults存储,当程序被卸载后重装时,再获得的UUID和之前就不同了。使用keychain存储可以保证程序卸载重装时,UUID不变。但当刷机或者升级系统后,UUID还是会改变的。但这仍是目前为止最佳的解决办法了,如果有更好的解决办法,欢迎留言。
(我整理的解决办法的参考来源:http://blog.k-res.net/archives/1081.html)
给大家两个类:
UUID.h中的代码:
#import尖括号(Foundation/Foundation.h)
@interface UUID :
NSObject
+(NSString *)getUUID;
@end
UUID.m中的代码:
#import "UUID.h"
#import 尖括号(Foundation/Foundation.h)
#import"KeychainItemWrapper.h"
@implementation UUID
+(NSString *)getUUID
{
KeychainItemWrapper
*keychainItem = [[KeychainItemWrapperalloc]
initWithIdentifier:@"UUID"
accessGroup:@"YOUR_BUNDLE_SEED.com.yourcompany.userinfo"];
NSString *strUUID = [keychainItemobjectForKey:(id)CFBridgingRelease(kSecValueData)];
//首次执行该方法时,uuid为空
if ([strUUID
isEqualToString:@""])
{
CFUUIDRef
uuidRef = CFUUIDCreate(kCFAllocatorDefault);
strUUID = (NSString *)CFBridgingRelease(CFUUIDCreateString (kCFAllocatorDefault,uuidRef));
[keychainItem setObject:strUUIDforKey:(id)CFBridgingRelease(kSecValueData)];
}
return strUUID;
}
@end
//获取设备id号
UIDevice *device = [UIDevice currentDevice];//创建设备对象
NSString *deviceUID = [[NSString alloc] initWithString:[device uniqueIdentifier]];
NSLog(@"%@",deviceUID); // 输出设备id
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];//获取软件版本号
NSString *systemVersion = [[UIDevice currentDevice] systemVersion];//系统版本
NSString *systemModel = [[UIDevice currentDevice] model];//是iphone 还是 ipad
NSDictionary *dic = [[NSBundle mainBundle] infoDictionary];//获取info-plist
NSString *appName = [dic objectForKey:@"CFBundleIdentifier"];//获取Bundle identifier
NSString *appVersion = [dic valueForKey:@"CFBundleVersion"];//获取Bundle Version
NSDictionary *userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:
deviceID, @"deviceID",
systemVersion, @"systemVersion",
systemModel, @"systemModel",
appName, @"appName",
appVersion, @"appVersion",nil];
获取UUID并存储
UDID被弃用,使用UUID来作为设备的唯一标识。获取到UUID后,如果用NSUserDefaults存储,当程序被卸载后重装时,再获得的UUID和之前就不同了。使用keychain存储可以保证程序卸载重装时,UUID不变。但当刷机或者升级系统后,UUID还是会改变的。但这仍是目前为止最佳的解决办法了,如果有更好的解决办法,欢迎留言。
(我整理的解决办法的参考来源:http://blog.k-res.net/archives/1081.html)
给大家两个类:
UUID.h中的代码:
#import尖括号(Foundation/Foundation.h)
@interface UUID :
NSObject
+(NSString *)getUUID;
@end
UUID.m中的代码:
#import "UUID.h"
#import 尖括号(Foundation/Foundation.h)
#import"KeychainItemWrapper.h"
@implementation UUID
+(NSString *)getUUID
{
KeychainItemWrapper
*keychainItem = [[KeychainItemWrapperalloc]
initWithIdentifier:@"UUID"
accessGroup:@"YOUR_BUNDLE_SEED.com.yourcompany.userinfo"];
NSString *strUUID = [keychainItemobjectForKey:(id)CFBridgingRelease(kSecValueData)];
//首次执行该方法时,uuid为空
if ([strUUID
isEqualToString:@""])
{
CFUUIDRef
uuidRef = CFUUIDCreate(kCFAllocatorDefault);
strUUID = (NSString *)CFBridgingRelease(CFUUIDCreateString (kCFAllocatorDefault,uuidRef));
[keychainItem setObject:strUUIDforKey:(id)CFBridgingRelease(kSecValueData)];
}
return strUUID;
}
@end
相关文章推荐
- iOS 3D Touch开发tableview页面内的使用
- iOS8 Layout Margins 详解
- iOS开发模式小探
- IOS版添加phonegap百度第三方登录 Frontia插件教程
- iOS 录音
- iOS获取设备型号、设备类型等信息
- iOS 9音频应用播放音频之控制播放速度
- iOS 9音频应用播放音频之控制播放速度
- 关于iOS多线程,你看我就够了
- iOS enum 定义与使用
- Nagios被监控端简单搭建
- iOS button.titleLabel和直接设置button setText
- iOS多线程
- iOS: TableView如何刷新指定的cell 或section
- iOS第三方学习1-SDWebImage学习和使用
- 项目适配iOS9遇到的一些问题及解决办法
- iOS中block的定义和使用
- 查看iOS崩溃日志从 Mac OS X上
- iOS开发笔记8:Remote Notification远程消息推送处理
- iOS block3种传值方法