1.问题描述:
项目需要在APP应用中检测蓝牙是否已经打开,如果手机蓝牙没有开启,则需要弹出提示框,并点击跳转到手机蓝牙设置界面开启蓝牙。
2.尝试解决办法:
在iOS9之前,一只都是使用这个接口跳转的:
let url = NSURL(string: "prefs:root=Bluetooth");
if UIApplication.sharedApplication().canOpenURL(url!) {
UIApplication.sharedApplication().openURL(url!)
}
但是现在手机升级iOS10之后,这个方法就失效了。
请问有什么好的解决办法吗?
PS:
如果能直接在APP里面连接打开手机蓝牙开关,并且连接蓝牙就更好了!
黄舟2017-04-18 09:50:47
iOS10이 점프하지 않는 문제에 대해 iOS는 실제로 공개되지 않은 방법을 제공합니다. 하지만 절제가 문제이지만 이를 우회할 수 있는 방법을 찾을 수 있습니다.
NSString * defaultWork = [self getDefaultWork];
NSString * bluetoothMethod = [self getBluetoothMethod];
NSURL*url=[NSURL URLWithString:@"Prefs:root=Bluetooth"];
클래스 LSApplicationWorkspace = NSClassFromString(@"LSApplicationWorkspace");
[[LSApplicationWorkspace PerformSelector:NSSelectorFromString(defaultWork)] PerformSelector:NSSelectorFromString(bluetoothMethod) withObject:url withObject:nil];
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} 길이:16];
반품 방법;
}
-(NSString *) getBluetoothMethod{
으아아아return method;
}
위는 블루투스 인터페이스에 진입하는 방법입니다. 다른 페이지로 이동할 수도 있습니다. 설정 페이지는 @"@"Prefs:root=TETHERING"이고, wifi는 @"Prefs:root=WIFI"입니다. Prefs의 P는 대문자로 되어 있으니 참고하세요. 이렇게 작성하면 단점도 있습니다. Apple의 미공개 방법의 경우 한 번 수정되면 다시 수정해야 합니다.
https://segmentfault.com/q/10에 답변이 있습니다... . 현재 설정 페이지로 이동할 수 있습니다.