iOS10 之后不允許跳轉到任何系統設置頁面,但是可以通過私有API跳轉到系統設置頁面,私有方法如下(慎用):
NSURL*url=[NSURL URLWithString:@"applicationWorkspace = NSClassFromString(@"LSApplicationWorkspace");[[LSApplicationWorkspace performSelector:@selector(defaultWorkspace)] performSelector:@selector(openSensitiveURL:withOptions:) withObject:url withObject:nil];可利用ASCII值進行拼裝組合或者對私有方法名加密來繞過審核,ASCII值進行拼裝組合的方法如下:
-(NSString *) getDefaultWork{ NSData *dataOne = [NSData dataWithBytes:(unsigned char []){0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x57,0x6f,0x72,0x6b,0x73,0x70,0x61,0x63,0x65} length:16]; NSString *method = [[NSString alloc] initWithData:dataOne encoding:NSASCIIStringEncoding]; return method;}-(NSString *) getWifiMethod{ NSData *dataOne = [NSData dataWithBytes:(unsigned char []){0x6f, 0x70, 0x65, 0x6e, 0x53, 0x65, 0x6e, 0x73, 0x69,0x74, 0x69,0x76,0x65,0x55,0x52,0x4c} length:16]; NSString *keyone = [[NSString alloc] initWithData:dataOne encoding:NSASCIIStringEncoding]; NSData *dataTwo = [NSData dataWithBytes:(unsigned char []){0x77,0x69,0x74,0x68,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73} length:11]; NSString *keytwo = [[NSString alloc] initWithData:dataTwo encoding:NSASCIIStringEncoding]; NSString *method = [NSString stringWithFormat:@"%@%@%@%@",keyone,@":",keytwo,@":"]; return method;}NSString * defaultWork = [self getDefaultWork];NSString * wifiMethod = [self getWifiMethod]; NSURL*url=[NSURL URLWithString:@"Prefs:root=WIFI"];Class LSApplicationWorkspace = NSClassFromString(@"LSApplicationWorkspace");[[LSApplicationWorkspace performSelector:NSSelectorFromString(defaultWork)] performSelector:NSSelectorFromString(wifiMethod) withObject:url withObject:nil];注意:蘋果的私有方法一旦修改,我們必須重新進行修改
參考資料: 關于iOS 10,跳轉系統設置問題 聊聊iOS 10更新以后跳轉系統設置的幾種方式
新聞熱點
疑難解答