1.获取设备型号
//获取设备型号
-(NSString *) getMobiePlatform {
//方法1 需要引入头文件 #include <sys/utsname.h>
struct utsname systemInfo;
uname(&systemInfo);
NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
NSLog(@"platform:%@",platform);
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 (CDMA)";
if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)";
if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch (1 Gen)";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch (2 Gen)";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch (3 Gen)";
if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch (4 Gen)";
if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch (5 Gen)";
if ([platform isEqualToString:@"iPad1,1"]) return @"iPad";
if ([platform isEqualToString:@"iPad1,2"]) return @"iPad 3G";
if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";
if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini";
if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini (GSM+CDMA)";
if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3 (WiFi)";
if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3 (GSM+CDMA)";
if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3";
if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4";
if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4 (GSM+CDMA)";
if ([platform isEqualToString:@"i386"]) return @"Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"Simulator";
return platform;
}
2.获取设备ID
-(NSString*)getDeviceId{
UIDevice *device = [UIDevice currentDevice];
if ([device respondsToSelector:@selector(identifierForVendor)]) {
return device.identifierForVendor.UUIDString;
}else{
return @"ssss";
}
}
3.获取设备版本
-(NSString*)getSystemVersion{
NSString*version = [[[NSBundle mainBundle]infoDictionary]objectForKey:@"CFBundleVersion"];
//NSString * result = version;
return version;
}
4.获取已经安装的apps
参考链接:
// http://iloss.me/post/kai-fa/2014-03-07-mobileinstallation
// http://stackoverflow.com/questions/3878197/is-it-possible-to-get-information-about-all-apps-installed-on-iphone
#import "ViewController.h"
#include <objc/runtime.h>
@interface ViewController ()
@end
//int (*MobileInstallationBrowse)(NSDictionary *options, int (*callback)(NSDictionary *dict, id value), id value);
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSString *identifier = [[NSBundle mainBundle] bundleIdentifier];
NSLog(@"id=%@",identifier);
BOOL applist = APCheckIfAppInstalled(identifier);
NSLog(@"%d",applist);
NSArray * array = [self installedApps];
NSLog(@"array=%@",array);
}
/*----------- Method 1 ------------*/
BOOL APCheckIfAppInstalled(NSString *bundleIdentifier){
static NSString *const cacheFileName = @"com.apple.mobile.installation.plist";
NSString *relativeCachePath = [[@"Library" stringByAppendingPathComponent: @"Caches"] stringByAppendingPathComponent: cacheFileName];
NSDictionary *cacheDict = nil;
NSString *path = nil;
NSLog(@"relativeCachePath:%@",relativeCachePath);
// Loop through all possible paths the cache could be in
for (short i = 0; 1; i++) {
switch (i) {
case 0: // Jailbroken apps will find the cache here; their home directory is /var/mobile
path = [NSHomeDirectory() stringByAppendingPathComponent: relativeCachePath];
break;
case 1: // App Store apps and Simulator will find the cache here; home (/var/mobile/) is 2 directories above sandbox folder
path = [[NSHomeDirectory() stringByAppendingPathComponent: @"../.."] stringByAppendingPathComponent: relativeCachePath];
break;
case 2: // If the app is anywhere else, default to hardcoded /var/mobile/
path = [@"/var/mobile" stringByAppendingPathComponent: relativeCachePath];
break;
default: // Cache not found (loop not broken)
return NO;
break;
}
BOOL isDir = NO;
NSLog(@"path:%@",path);
// Ensure that file exists
if ([[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDir] && !isDir){
cacheDict = [NSDictionary dictionaryWithContentsOfFile: path];
}
// If cache is loaded, then break the loop. If the loop is not "broken," it will return NO later (default: case)
if (cacheDict){
NSLog(@"cacheDict:%@",cacheDict);
break;
}
}
NSLog(@"gggg");
// First check all system (jailbroken) apps
NSDictionary *system = [cacheDict objectForKey: @"System"];
NSLog(@"system:%@",system);
if ([system objectForKey: bundleIdentifier]){
return YES;
}
// Then all the user (App Store /var/mobile/Applications) apps
NSDictionary *user = [cacheDict objectForKey: @"User"];
NSLog(@"user:%@",user);
if ([user objectForKey: bundleIdentifier]){
return YES;
}
// If nothing returned YES already, we'll return NO now
return NO;
}
/*------------ Method 2 is invaild ---------------*/
-(NSArray *) installedApps
{
BOOL isDir = NO;
NSDictionary *cacheDict;
NSDictionary *user;
static NSString *const cacheFileName = @"com.apple.mobile.installation.plist";
NSString *relativeCachePath = [[@"Library" stringByAppendingPathComponent: @"Caches"] stringByAppendingPathComponent: cacheFileName];
NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent: @"../.."] stringByAppendingPathComponent: relativeCachePath];
if ([[NSFileManager defaultManager] fileExistsAtPath: path isDirectory: &isDir] && !isDir) // Ensure that file exists
{
cacheDict = [NSDictionary dictionaryWithContentsOfFile: path];
user = [cacheDict objectForKey: @"System"]; // Then all the user (App Store /var/mobile/Applications) apps
}
NSLog(@"Installed Applications = %@",[user allKeys]);
return [user allKeys];
//return nil;
}