我有一个私有应用程序,需要扫描所有应用程序和方案并使用私有 API 获取它LSApplicationWorkspace defaultWorkspace
与其他函数方法一起使用,例如privateURLSchemes
allInstalledApplications
。这个应用程序运行良好,我可以从 iOS 11 之前的私有 API 获取所需的所有内容,但在这个版本中我只收到一些警告和一个空数组。苹果似乎在 iOS 11 中限制了开发者不能私下使用的私有 API。
所以我的问题是,有哪些替代方法可以在 iOS 11 中满足我的需求?
更新:此方法不适用于 iOS 12 - 需要授权
有一种方法可以查找是否安装了特定应用程序,它不是所有应用程序的列表,例如allInstalledApplications
返回,但对于查询特定包 ID 很有用
下面是一个示例,该方法接收包 id 并返回 true(如果已安装在设备上):
- (BOOL)checkIfAppInstalled: (NSString*)bundleID {
dlopen("/System/Library/PrivateFrameworks/MobileContainerManager.framework/MobileContainerManager",RTLD_NOW);
Class MBAppManager = NSClassFromString(@"MCMAppDataContainer");
NSError * error ;
id contentApp = [MBAppManager performSelector:@selector(containerWithIdentifier:error:) withObject:bundleID withObject:error];
return contentApp != nil;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)