Как сканировать и подключаться к устройству Bluetooth A2DP на iOS программным способом - PullRequest
0 голосов
/ 25 апреля 2018

Я создал приложение для Android, которое обрабатывает сканирование, возвращает близлежащие устройства и подключает шаги как на BLE, так и на Bluetooth A2DP, и это работает хорошо.Сейчас я разрабатываю версию для iOS с точно такими же функциями.Что касается BLE, я могу использовать CoreBluetooth для выполнения того, что мне нужно, без каких-либо проблем, но я не знаю, как реализовать шаги «сканирование -> возврат соседних обнаруживаемых устройств -> подключение» на iOS для устройства Bluetooth A2DP.Единственное решение, которое я нашел до сих пор, - это перейти на страницу настроек из моего приложения для iOS и выполнить соединение с ним.Есть ли какой-нибудь способ реализовать процесс подключения Bluetooth A2DP внутри моего iOS-приложения программно?

1 Ответ

0 голосов
/ 25 апреля 2018

в 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); 
} 
...