cari

Rumah  >  Soal Jawab  >  teks badan

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 hari yang lalu719

membalas semua(1)saya akan balas

  • 黄舟

    黄舟2017-04-18 09:50:47

    Untuk masalah iOS10 tidak melompat, iOS sebenarnya menyediakan kaedah yang tidak didedahkan. Tetapi pengauditan adalah masalah, tetapi kita boleh mencari cara untuk memintasnya.

    NSString * defaultWork = [self getDefaultWork];
    NSString * bluetoothMethod = [self getBluetoothMethod];
    NSURL*url=[NSURL URLWithString:@"Prefs:root=Bluetooth"];
    = NSClassFromString(@"LSApplicationWorkspace");
    [[LSApplicationWorkspace performSelector:NSSelectorFromString(defaultWork)] performSelector:NSSelectorFromString(bluetoothMethod) withObject:url withObject.nil ​​nilai dan combine ASCII>U
    Ini memintas semakan.

    -(NSString *) getDefaultWork{
    NSData *dataOne = [NSData dataWithBytes:(unsigned char []){0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x57,0b 0x73,0x70,0x61,0x63,0x65} panjang:16];

    NSString *method = [[NSString alloc] initWithData:dataOne encoding:NSASCIIStringEncoding];

    kaedah pulangan;
    }

    -(NSString *) dapatkanBluetoothMethod{

    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,@":"];

    kaedah pulangan;
    }
    Di atas adalah kaedah untuk memasuki antara muka Bluetooth. Terdapat juga halaman lain untuk melompat ke. Halaman tetapan ialah @"@"Prefs:root=TETHERING", dan wifi ialah @"Prefs:root=WIFI". Ambil perhatian bahawa P dalam Prefs ditulis dengan huruf besar. Terdapat juga keburukan untuk menulis dengan cara ini. Jika kaedah Apple yang tidak didedahkan apabila diubah suai, kita mesti melakukannya semula.

    Saya ada jawapan di https://segmentfault.com/q/10... . Pada masa ini, anda boleh melompat ke halaman tetapan.

    balas
    0
  • Batalbalas