検索

ホームページ  >  に質問  >  本文

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日前718

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

    https://segmentfault.com/q/10... に答えがあります。現在、設定ページにジャンプすることが可能です。

    返事
    0
  • キャンセル返事