objective-c - iOS 有什么办法可以直接跳转到手机蓝牙设置界面连接蓝牙?
高洛峰
高洛峰 2017-04-18 09:48:47
0
1
722

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

2.尝试解决办法:

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

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

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

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(1)
黄舟

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan