Я создал приложение для Android, которое обрабатывает сканирование, возвращает устройства поблизости и соединяет шаги как по BLE, так и по Bluetooth A2DP, и оно работает хорошо. Сейчас я разрабатываю версию для iOS с точно такими же функциями. Что касается части BLE, я могу без проблем использовать CoreBluetooth для выполнения того, что мне нужно, но я не знаю, как реализовать шаги «сканировать -> вернуть ближайшие обнаруживаемые устройства -> подключиться» на iOS для устройства Bluetooth A2DP. Единственное решение, которое я нашел до сих пор, — это перейти на страницу настроек из моего приложения для iOS и выполнить подключение к ней. Есть ли способ программно реализовать процесс подключения Bluetooth A2DP внутри моего приложения для iOS?
Как сканировать и подключаться к устройству Bluetooth A2DP на iOS программно
comment
Вы не можете обнаружить и подключиться к устаревшему устройству Bluetooth в своем приложении на iOS. Пользователь должен сделать это в настройках. Исключение составляют случаи, когда вы являетесь производителем устройства и ваше устройство сертифицировано mfi.
- person Paulw11   schedule 03.05.2018
Ответы (1)
в iOS Bluetooth работает по принципу центральной периферии. ниже показано, как он сканирует близлежащие устройства.
#import <UIKit/UIKit.h>
#import <CoreBluetooth/CoreBluetooth.h>
@interface MyViewController : UIViewController <CBPeripheralDelegate, CBCentralManagerDelegate>
{
CBCentralManager *mgr;
}
@property (readwrite, nonatomic) CBCentralManager *mgr;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
mgr = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
}
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
NSLog([NSString stringWithFormat:@"%@",[advertisementData description]]);
}
-(void)centralManager:(CBCentralManager *)central didRetrievePeripherals:(NSArray *)peripherals{
NSLog(@"This is it!");
}
- (void)centralManagerDidUpdateState:(CBCentralManager *)central{
NSString *messtoshow;
switch (central.state) {
case CBCentralManagerStateUnknown:
{
messtoshow=[NSString stringWithFormat:@"State unknown, update imminent."];
break;
}
case CBCentralManagerStateResetting:
{
messtoshow=[NSString stringWithFormat:@"The connection with the system service was momentarily lost, update imminent."];
break;
}
case CBCentralManagerStateUnsupported:
{
messtoshow=[NSString stringWithFormat:@"The platform doesn't support Bluetooth Low Energy"];
break;
}
case CBCentralManagerStateUnauthorized:
{
messtoshow=[NSString stringWithFormat:@"The app is not authorized to use Bluetooth Low Energy"];
break;
}
case CBCentralManagerStatePoweredOff:
{
messtoshow=[NSString stringWithFormat:@"Bluetooth is currently powered off."];
break;
}
case CBCentralManagerStatePoweredOn:
{
messtoshow=[NSString stringWithFormat:@"Bluetooth is currently powered on and available to use."];
[mgr scanForPeripheralsWithServices:nil options:nil];
//[mgr retrieveConnectedPeripherals];
//--- it works, I Do get in this area!
break;
}
}
NSLog(messtoshow);
}
person
manish
schedule
25.04.2018
Я реализовал код, который вы разместили в своем приложении ранее, но я заметил, что он работает только на устройствах BLE, а не на устройствах Bluetooth A2DP, не так ли? Вы знаете, как сканировать и подключаться к Bluetooth A2DP на iOS? Большое спасибо!
- person Kelsea; 26.04.2018