诊断蓝牙应用程序交互(干扰蓝牙音频播放)

时间:2014-12-01 01:21:52

标签: ios objective-c core-bluetooth

我有一个iOS蓝牙应用程序,充当CBCentral并连接到另一个充当CBPeripheral。中央请求连接/断开外围设备的通知,并通知连接是否丢失,以便您知道外围设备是否已超出范围,如Tile和其他一些蓝牙定位器小工具。

应用程序通常按预期工作,但我注意到,当它运行时,通过蓝牙播放到我的汽车音响的音频被中断。它有节奏地切入和跳出,就像跳过记录一样。它发生在多个蓝牙播放应用程序(音乐和下传)。我想也许是新操作系统或我的新iPhone 6,但当我杀死我的应用程序时,症状消失了。

您如何测试和诊断此类干扰?仪器显示蓝牙系统已开启,但其他情况并不多。它不会在应用程序暂停时报告。我看到一些我将要调查的少量音频处理。否则,该应用程序在后台非常静止。

以下是我的应用目前正在做的事情:

在一台iOS设备上,它充当外围设备并宣传服务:

[self.peripheralManager startAdvertising:@{ CBAdvertisementDataServiceUUIDsKey: @[kServiceUUID], CBAdvertisementDataLocalNameKey: @"MyIdentifier"}];

当Central运行时,他会查找宣传此特性的设备,连接并请求通知(实际上并未订阅该特性):

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error {
    if (error) {
        [self cleanup];
        return;
    }

    for (CBCharacteristic *characteristic in service.characteristics) {
        if ([characteristic.UUID isEqual:kSlaveDeviceUUID]) {
            [peripheral setNotifyValue:YES forCharacteristic:characteristic];
        }
    }
}

我得到didUpdateNotificationStateForCharacteristic回调等的适当回复

我可以关闭外围设备上的蓝牙,并通知它已消失,重新打开并重新连接,使设备超出范围并返回并获取通知,包括前台和后台。

这看起来很香草,但我必须遗漏一些重要的东西。

0 个答案:

没有答案