찾다

 >  Q&A  >  본문

objective-c - iOS 有什么办法可以直接跳转到手机蓝牙设置界面连接蓝牙?

1.问题描述:
项目需要在APP应用中检测蓝牙是否已经打开,如果手机蓝牙没有开启,则需要弹出提示框,并点击跳转到手机蓝牙设置界面开启蓝牙。

2.尝试解决办法:

在iOS9之前,一只都是使用这个接口跳转的:

 let url = NSURL(string: "prefs:root=Bluetooth");
 if UIApplication.sharedApplication().canOpenURL(url!) {
      UIApplication.sharedApplication().openURL(url!)
 }

但是现在手机升级iOS10之后,这个方法就失效了。
请问有什么好的解决办法吗?

PS:
如果能直接在APP里面连接打开手机蓝牙开关,并且连接蓝牙就更好了!

高洛峰高洛峰2771일 전715

모든 응답(1)나는 대답할 것이다

  • 黄舟

    黄舟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에 답변이 있습니다... . 현재 설정 페이지로 이동할 수 있습니다.

    회신하다
    0
  • 취소회신하다