随着iOS 11的即将发布,我们在iOS 11上进行了相关测试,发现苹果变动了相关的API。在iOS 11beta4和iOS 11beta5中测试发现,使用私有API中LSApplicationWorkspace获取已安装列表拿不到具体内容了,详情如下:
原核心代码:
/*首先获取 LSApplicationWorkspace 实例*/
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
NSArray*installedApps = [workspace performSelector:@selector(allApplications)];
返回的数组installedApps为已安装的应用LSApplicationProxy实例化对象,从而可以拿到应用的一些属性,比如包名、版本号、名称等等……
但是在iOS 11上进行了测试,发现上面代码不能返回正常所需已安装列表信息,似乎苹果对API进行了相关改动,用Xcode调试时候控制台输出如下信息:
[default] No results found for query: {(
<_LSBundleProxiesOfTypeQuery: 0x1c42210a0>
)}
显示查询不到任何结果。
目前在iOS 11上获取已安装列表暂时无进展,为此建立了一个QQ群,(546572794)iOS技术交流分享群,有兴趣的可以加群大家一起探讨下!
网友评论