私有API简单使用


iOS的API分为四种:

Published API(公开的API)(或者Documented API

还有两类:私有APIPrivate API和未公开APIUnPublished API(或者Undocumented API)

私有API是指放在PrivateFrameworks框架中的API,未公开的API是指虽然放在Frameworks框架中,但是却没有在苹果的官方文档中有使用说明、代码介绍等记录的API

按苹果的说法,未公开的API是还不够成熟,可能还会变动的API,等完全成型了后会变成公开的API,但是目前不对其提供承诺,就是系统版本升级后可能会失效。而私有API是苹果明确不能使用的API。虽然两者有所区别,但是在具体使用方法上是类似的。


私有API会面临审核通不过然后不能上线,但是也有使用私有API通过审核的比如谷歌的“Google Voice”,所以具体审核的详情不得而知。




github地址  https://github.com/sunlight2728/iOS-Runtime-Headers


iOS-Runtime-Headers 包含了所有的私有API,可以简单查阅

iOS9可行的使用方法:

NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/FTServices.framework"];
BOOL success = [b load];

Class FTDeviceSupport = NSClassFromString(@"FTDeviceSupport");
id si = [FTDeviceSupport valueForKey:@"sharedInstance"];

NSLog(@"-- %@", [si valueForKey:@"deviceColor"]);

获取用户所有的bundle id

    Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");

    NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];

    NSArray *arr =[workspace performSelector:@selector(allInstalledApplications)];

另一种获取方法
  Class LSApplicationWorkspace_class = NSClassFromString(@"LSApplicationWorkspace");

    NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];

    

    NSArray *arrAPP =[workspace performSelector:@selector(allApplications)];



你可能感兴趣的:(私有API简单使用)