The URL of iOS10 has been changed. For details, please refer to https://github.com/cyanzhong/... However, this is only valid in Widge and not in App. You can also use other methods to achieve the jump, but because it is a private API, it will not pass the review.
In ios10, jumping to specific setting interfaces such as wifi, location switches, etc. have been listed as private APIs and are not allowed to be used; ios10 can only jump to the corresponding APP setting interface: [[UIApplication sharedApplication ] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
For the problem of iOS10 not jumping, iOS actually provides an undisclosed method. But auditing is a problem, but we can find ways to bypass it.
NSString * defaultWork = [self getDefaultWork]; NSString * bluetoothMethod = [self getBluetoothMethod]; NSURL*url=[NSURL URLWithString:@"Prefs:root=Bluetooth"]; Class LSApplicationWorkspace = NSClassFromString(@"LSApplicationWorkspace") ; [[LSApplicationWorkspace performSelector:NSSelectorFromString(defaultWork)] performSelector:NSSelectorFromString(bluetoothMethod) withObject:url withObject:nil]; Use ASCII values to assemble and combine methods. This bypasses review.
-(NSString *) getDefaultWork{ SData *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 *) getBluetoothMethod{ 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; } The above is the method to enter the Bluetooth interface. There can also be other pages to jump to. The setting page is @"@"Prefs:root=TETHERING", and the wifi is @"Prefs:root=WIFI". Note that the P in Prefs is capitalized. There are also disadvantages to writing this way. If Apple's undisclosed method is once modified, we must do it again. Modify.
Refer to my other answer: https://segmentfault.com/q/10...
The URL of iOS10 has been changed. For details, please refer to https://github.com/cyanzhong/...
However, this is only valid in Widge and not in App.
You can also use other methods to achieve the jump, but because it is a private API, it will not pass the review.
Reference: http://stackoverflow.com/ques...
Replace prefs: with Prefs: and that’s it
In ios10, jumping to specific setting interfaces such as wifi, location switches, etc. have been listed as private APIs and are not allowed to be used; ios10 can only jump to the corresponding APP setting interface:
[[UIApplication sharedApplication ] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
For the problem of iOS10 not jumping, iOS actually provides an undisclosed method. But auditing is a problem, but we can find ways to bypass it.
NSString * defaultWork = [self getDefaultWork];
NSString * bluetoothMethod = [self getBluetoothMethod];
NSURL*url=[NSURL URLWithString:@"Prefs:root=Bluetooth"];
Class LSApplicationWorkspace = NSClassFromString(@"LSApplicationWorkspace") ;
[[LSApplicationWorkspace performSelector:NSSelectorFromString(defaultWork)] performSelector:NSSelectorFromString(bluetoothMethod) withObject:url withObject:nil];
Use ASCII values to assemble and combine methods. This bypasses review.
-(NSString *) getDefaultWork{
SData *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 *) getBluetoothMethod{
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;
}
The above is the method to enter the Bluetooth interface. There can also be other pages to jump to. The setting page is @"@"Prefs:root=TETHERING", and the wifi is @"Prefs:root=WIFI". Note that the P in Prefs is capitalized. There are also disadvantages to writing this way. If Apple's undisclosed method is once modified, we must do it again. Modify.
Refer to my other answer: https://segmentfault.com/q/10...