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メソッド;
}
上記はBluetoothインターフェースに入るメソッドです。他のページにジャンプすることもできます。設定ページは@"@"Prefs:root=TETHERING"、Wi-Fiは@"Prefs:root=WIFI"です。PrefsのPが大文字であることに注意してください。このように書くことにはデメリットもあります。Appleの非公開の方法の場合一度変更すると、再度変更する必要があります。
https://segmentfault.com/q/10... に答えがあります。現在、設定ページにジャンプすることが可能です。