私有API简单使用
iOS的API分为四种:
Published API(公开的API)(或者Documented API)
还有两类:私有API:Private API和未公开API:UnPublished API(或者Undocumented API)。
【私有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)];
推荐阅读
- 2020-04-07vue中Axios的封装和API接口的管理
- 科学养胃,别被忽悠,其实真的很简单
- opencv|opencv C++模板匹配的简单实现
- 松软可口易消化,无需烤箱超简单,新手麻麻也能轻松成功~
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- 简单心理2019春A期+32+张荣
- Android7.0|Android7.0 第三方应用无法访问私有库
- 《算法》-图[有向图]
- android防止连续点击的简单实现(kotlin)
- 机器学习一些简单笔记