2013-03-03 5 views
1

Я пытаюсь подключить аксессуар в своем приложении, не выполняя установку в «setting-> bluetooth».Как правильно подключиться к аксессуару с помощью BluetoothManager?

Я выполнил шаги по этой ссылке: http://www.pocketmagic.net/2012/07/bluetooth-and-ios-use-bluetooth-in-your-iphone-apps/#.UTKqLKVvdha Он работает хорошо, пока я не получу сообщение «с ошибкой 305», когда я пытаюсь подключиться к аксессуару.

Вот мой список шагов:

  1. Получить обработчик и экземпляр BluetoothManager службы:

    btManager = [BluetoothManager sharedInstance]; 
    
  2. Регистрация уведомлений, для изменения радио Bluetooth (вкл/выкл) и для обнаружения нового устройства:

    // setup bluetooth notifications 
    [[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(deviceDiscovered:) 
    name:@"BluetoothDeviceDiscoveredNotification" 
    object:nil]; 
    
    [[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(bluetoothAvailabilityChanged:) 
    name:@"BluetoothAvailabilityChangedNotification" 
    object:nil]; 
    

    Здесь приложение может открыть аксессуар в

    - (void)deviceDiscovered:(NSNotification *) notification 
    
  3. Подключения к аксессуару с помощью метода BluetoothDevice как [btdev connect]. Здесь я получаю сообщение

    «подключение к услуге 0x00001000 на устройстве« аксессуар »F0: B4: 79: 0B: 68: 45 с ошибкой 305».

Я пробовал другие методы, такие как [acceptSSP][connectWithServices], но это не помогло. Должен ли я сначала спариваться? Если да, то как мне это сделать?

ответ

1

принимать запросы сопряжения:

[[NSNotificationCenter defaultCenter] 
addObserver:self 
selector:@selector(bluetoothPairingUserNumericComparision:) 
name:@"BluetoothPairingUserNumericComparisionNotification" 
object:nil]; 

[[NSNotificationCenter defaultCenter] 
addObserver:self 
selector:@selector(bluetoothPairingPINResultSuccess:) 
name:@"BluetoothPairingPINResultSuccessNotification" 
object:nil]; 

затем

- (void)bluetoothPairingUserNumericComparision:(NSNotification *)notification { 

    NSLog(@"NOTIFICATION:bluetoothPairingUserNumericComparision: called. BT State: %d", [btManager enabled]); 
    NSLog(@"NOTIFICATION: %@", notification); 

    NSDictionary *dict = notification.object; 

    BluetoothDevice *device = dict[@"device"]; 
    NSNumber *value = dict[@"value"]; 

    NSLog(@"device: %@ value: %@", device, value); 

    [btManager acceptSSP:0 forDevice:device]; 
} 

- (void)bluetoothPairingPINResultSuccess:(NSNotification *)notification { 

    NSLog(@"NOTIFICATION: bluetoothPairingPINResultSuccess called."); 
    NSLog(@"NOTIFICATION: %@", notification); 
    NSLog(@"paired devices: %@", [btManager pairedDevices]); 

} 

Теперь устройство в паре. Но я застрял здесь, потому что я не могу подключать или обмениваться данными.

1

Я получаю сообщение об ошибке «с ошибкой 305» уже около недели. Я, наконец, решил его, установив BluetoothManager как подключаемый перед сканированием для служб. Я не видел ссылки на эту настройку на любом другом форуме. Надеюсь, поможет.

[btManager setConnectable:YES]; 
[btManager scanForServices:0xFFFFFFFF]; 
1

Обратите внимание, что для того, чтобы получить эту компиляцию, вы должны добавить следующую строку в определение класса BluetoothManager:

-(void)acceptSSP:(NSInteger)errorCodeShouldBeZero forDevice:(id)device;

1

Я надеюсь, что это поможет вам, вы можете попробовать с сервисным знаком 0x00002000

BluetoothManager *btManager = [[self bluetoothScanner] bluetoothManager]; 
[btManager setDevicePairingEnabled:YES]; 
[btManager connectDevice:bluetoothDevice withServices:0x00002000];