Maison > Questions et réponses > le corps du texte
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
Pour le problème du non-saut d'iOS10, iOS propose en fait une méthode non divulguée. Mais la modération est un problème, mais nous pouvons trouver des moyens de le contourner.
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];
Utilisez les valeurs ASCII pour assembler et combiner des méthodes. Cela contourne l’examen.
-(NSString *) getDefaultWork{
NSData *dataOne = [NSData dataWithBytes :(unsigned char []){0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x57,0x6f,0x72,0x6b, 0x73,0x70,0x61,0x63,0x65} longueur:16];
NSString *method = [[NSString alloc] initWithData:dataOne encoding:NSASCIIStringEncoding];
méthode de retour ;
}
-(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,@":"];
méthode de retour ;
>
Ce qui précède est la méthode pour accéder à l'interface Bluetooth. Il peut également y avoir d’autres pages auxquelles accéder. La page de configuration est @"@"Prefs:root=TETHERING", et le wifi est @"Prefs:root=WIFI". Notez que le P dans Prefs est en majuscule. Il y a aussi des inconvénients à écrire de cette façon. Si la méthode non divulguée d'Apple est une fois modifié, il faut le refaire.
J'ai une réponse sur https://segmentfault.com/q/10... . Il est actuellement possible d'accéder à la page des paramètres.