如何使用BluetoothManager正确连接附件?

时间:2013-03-03 02:27:58

标签: ios6 bluetooth iphone-privateapi accessory ios-bluetooth

我正在尝试连接我的应用程序中的附件而不在“setting-> bluetooth”中进行设置。

我已按照此链接中的步骤操作:http://www.pocketmagic.net/2012/07/bluetooth-and-ios-use-bluetooth-in-your-iphone-apps/#.UTKqLKVvdha当我尝试连接附件时收到“因错误305失败”消息,它运行良好。

以下是我的步骤列表:

  1. 获取BluetoothManager服务的处理程序和实例:

    btManager = [BluetoothManager sharedInstance];
    
  2. 注册通知,更改蓝牙无线电(开/关)以及发现新设备:

    // 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”。

  4. 我尝试了其他方法,例如[acceptSSP][connectWithServices],但它没有帮助。我必须先配对吗?如果是这样,我该怎么做?

4 个答案:

答案 0 :(得分: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 :(得分:1)

我已经获得了“错误305失败”大约一周了。我最终通过在扫描服务之前将BluetoothManager设置为可连接来解决它。我没有在任何其他论坛中看到过对此设置的引用。希望它有所帮助。

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

答案 2 :(得分:1)

请注意,为了使其编译,您必须将以下行添加到BluetoothManager类定义中:

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

答案 3 :(得分:1)

我希望这会对你有所帮助,你可以试试服务标签0x00002000

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