레이블이 private api인 게시물을 표시합니다. 모든 게시물 표시
레이블이 private api인 게시물을 표시합니다. 모든 게시물 표시

2018년 1월 20일 토요일

IOS11 Private api - exist specific application

- (BOOL)existAppContainer: (NSString*)bundleID
{
    if ([[UIDevice currentDevice].systemVersion floatValue] >= 11.0)
    {
        NSBundle *container = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/MobileContainerManager.framework"];
        if ([container load])
        {
            Class appContainer = NSClassFromString(@"MCMAppContainer");
            id test = [appContainer performSelector:@selector(containerWithIdentifier:error:) withObject:bundleID withObject:nil];
            NSLog(@"%@",test);
            
            if (test)
            {
                return YES;
            }
        }
    }
    
    return NO;

}

IOS Private api - detect airplane mode

- (BOOL) isAirplainMode
{
    NSBundle *bundle = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/AppSupport.framework"];
    BOOL success = [bundle load];
    BOOL airplain = NO;
    
    if(YES == success)
    {
        Class RadiosPreferences = NSClassFromString(@"RadiosPreferences");
        id radioPreferences = [[RadiosPreferences alloc] init];
        
        SEL selector = NSSelectorFromString(@"airplaneMode");
        if(YES == [radioPreferences respondsToSelector:selector])
        {
            airplain = [[radioPreferences valueForKey:@"airplaneMode"] boolValue];
        }
    }

    return airplain;

}