iOS 获取App列表

通过私有方法获取应用列表,方法如下:

LSApplicationWorkspace获取

在系统的MoblieCoreServices.framework 框架中有一个叫做LSApplicationWorkspace的类,利用该类可以获取到手机上应用的各种信息,包括已经安装的app列表以及正在安装的app列表等,具体API如下:

image.png

通过代码调用如下:


- (void)getAppList
{
    Class LSApplicationWorkspace_Class = NSClassFromString(@"LSApplicationWorkspace");
    NSObject *workspace = [LSApplicationWorkspace_Class performSelector:NSSelectorFromString(@"defaultWorkspace")];
    NSArray *appList = [workspace performSelector:NSSelectorFromString(@"allApplications")];
    for (id app in appList) {
        NSLog(@"-----App列表----%@", [app performSelector:NSSelectorFromString(@"applicationIdentifier")]);
    }
}
    
    
 -------分割线--------   

2018-09-10 12:24:02.292547+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.datadetectors.DDActionsService
2018-09-10 12:24:02.292744+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.WLAccessService
2018-09-10 12:24:02.292906+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.SafariViewService
2018-09-10 12:24:02.293119+0800 MOBGetAppList[6395:246717] -----App列表----cuilinhao.com.cn.TestJumpTwo
2018-09-10 12:24:02.293296+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.social.SLYahooAuth
2018-09-10 12:24:02.293481+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.news
2018-09-10 12:24:02.293678+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.ScreenshotServicesService
2018-09-10 12:24:02.293877+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.SharedWebCredentialViewService
2018-09-10 12:24:02.294030+0800 MOBGetAppList[6395:246717] -----App列表----cuilinhao.com.cn.MOBGetAppList
2018-09-10 12:24:02.294211+0800 MOBGetAppList[6395:246717] -----App列表----com.520it.DYZB
2018-09-10 12:24:02.294390+0800 MOBGetAppList[6395:246717] -----App列表----peipei.MySwift
2018-09-10 12:24:02.294582+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.family
2018-09-10 12:24:02.297162+0800 MOBGetAppList[6395:246717] -----App列表----com.mob.bbssdk.sample
2018-09-10 12:24:02.297379+0800 MOBGetAppList[6395:246717] -----App列表----com.mob.VIPDemo
2018-09-10 12:24:02.297579+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.siri.parsec.HashtagImagesApp
2018-09-10 12:24:02.297758+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.SharingViewService
2018-09-10 12:24:02.297958+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.Preferences
2018-09-10 12:24:02.298126+0800 MOBGetAppList[6395:246717] -----App列表----cuilinhao.com.cn.----
2018-09-10 12:24:02.298315+0800 MOBGetAppList[6395:246717] -----App列表----com.mob.princeLin
2018-09-10 12:24:02.298477+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.ServerDocuments
2018-09-10 12:24:02.298653+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.PrintKit.Print-Center
2018-09-10 12:24:02.298860+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.MailCompositionService
2018-09-10 12:24:02.299048+0800 MOBGetAppList[6395:246717] -----App列表----cuilinhao.com.cn.TestBBS
2018-09-10 12:24:02.299238+0800 MOBGetAppList[6395:246717] -----App列表----cuilinhao.com.cn.AlaformTest
2018-09-10 12:24:02.299402+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.WebSheet
2018-09-10 12:24:02.299609+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.TrustMe
2018-09-10 12:24:02.299816+0800 MOBGetAppList[6395:246717] -----App列表----com.apple.mobilesms.compose

MCMAppContainer 判断

在系统的MobileContainerManager.framework 中的一个类MCMAppContainer,通过该类可以判断某App是否存在,不过无法确定应用的状态为安装中或已安装,代码如下:

ps: 必须是真机调试

- (void)isHere
{
    NSBundle *container = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/MobileContainerManager.framework"];
    
    if ([container load]) {
        Class appContainer = NSClassFromString(@"MCMAppContainer");
        id test = [appContainer performSelector:@selector(containerWithIdentifier:error:) withObject:@"com.tencent.xin" withObject:nil];
        
        if (test)
        {
            NSLog(@"存在该应用");
        }
        else
        {
             NSLog(@"不存在该应用");
        }
    }
}


代码混淆

//base64编码
- (NSString *)encodeString:(NSString *)string
{
    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
    NSString *encodedStr = [data base64EncodedStringWithOptions:0];
    return encodedStr;
}

//base64解码
- (NSString *)decodeString:(NSString *)string
{
    NSData *data = [[NSData alloc] initWithBase64EncodedString:string options:0];
    NSString *decodedStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    return decodedStr;
}

//调用私有api
- (void)testPrivateApi
{
    NSString *path = [self decodeString:@"L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL01vYmlsZUNvbnRhaW5lck1hbmFnZXIuZnJhbWV3b3Jr"];
    NSBundle *container = [NSBundle bundleWithPath:path];
    if ([container load]) {
        Class appContainer = NSClassFromString([self decodeString:@"TUNNQXBwQ29udGFpbmVy"]);
        NSString *sel = [self decodeString:@"Y29udGFpbmVyV2l0aElkZW50aWZpZXI6ZXJyb3I6"];
        
        id test = [appContainer performSelector:NSSelectorFromString(sel) withObject:@"com.tencent.xin" withObject:nil];
        
        if (test)
        {
            NSLog(@"存在该应用");
        }
        else
        {
             NSLog(@"不存在该应用");
        }
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,237评论 3 119
  • 丽江印象一:慵懒 在这里时间都会变慢,大研古镇里好多酒吧都有“聊天、发呆”的提示;走累了,随时在沿街的木质长椅坐下...
    Jayden1阅读 360评论 0 0
  • 艺术小酒馆:为喜欢艺术的成年人传播通俗易懂的艺术知识。每天为你解读一幅世界名画。 作者:醉了的妞,自由撰稿人。醒时...
    醉了的妞阅读 1,371评论 0 1
  • 嗨,晚上好。让夜风轻吻你的记忆。让文字温暖你的心头。 最近有着太多太多的烦心事,让我生活的喘不过气,...
    平江159熊春艳阅读 166评论 3 0

友情链接更多精彩内容