8

CoreBluetooth コードを iOS 6 から iOS 7 に更新する際に問題が発生しています。周辺機器をスキャンして接続することはできますが、iOS 7 で提供される新しい CoreBluetooth メソッドを使用して周辺機器を再接続することはできません。再接続を達成しようとしている方法:

- (void)retrievePeripheral:(NSString *)uuidString
{

NSUUID *nsUUID = [[NSUUID UUID] initWithUUIDString:uuidString];

if(nsUUID)
{        
    NSArray *peripheralArray = [centralManager retrievePeripheralsWithIdentifiers:@[nsUUID]];

    // Check for known Peripherals
    if([peripheralArray count] > 0)
    {
        for(CBPeripheral *peripheral in peripheralArray)
        {
            NSLog(@"Connecting to Peripheral - %@", peripheral);

            [self connectPeripheral:peripheral];
        }
    }
    // There are no known Peripherals so we check for connected Peripherals if any
    else
    {
        CBUUID *cbUUID = [CBUUID UUIDWithNSUUID:nsUUID];

        NSArray *connectedPeripheralArray = [centralManager retrieveConnectedPeripheralsWithServices:@[cbUUID]];

        // If there are connected Peripherals
        if([connectedPeripheralArray count] > 0)
        {
            for(CBPeripheral *peripheral in connectedPeripheralArray)
            {
                NSLog(@"Connecting to Peripheral - %@", peripheral);

                [self connectPeripheral:peripheral];
            }
        }
        // Else there are no available Peripherals
        else
        {
            // No Dice!
            NSLog(@"There are no available Peripherals");
        }
    }
}

}

uuidString は、保存されたペリフェラル UUID です。

使用可能なペリフェラルがない NSLog ステートメントに常にアクセスしています。私は非常に明白な何かを見逃していると思います.誰かが私を正しい方向に向けることができます.

さらに、CoreBluetooth の iOS 7 アップデートの問題に関する他の投稿を読み、BLE デバイスと iOS デバイスをリセットしようとしましたが、役に立ちませんでした。

前もって感謝します!可聴

4

2 に答える 2

1

これは古い投稿ですが、回答を探している他の人向けです。

retrieveConnectedPeripherals への 2 回目/次の呼び出しでは、実際には、iOS の初回接続 NSUUID ではなく、サービス UUID (CBUUID タイプ) が必要です。取得されるのは、そのサービス UUID が実装されている周辺機器のリストです。たとえば、多数のアクティビティ アームバンドがあり、そのすべてに必要なハートビート サービスがある場合、3 つの周辺機器すべてを取得することになります。また、既知の周辺機器への最初の呼び出しでは、最初の接続時に iOS によって ID が作成されるため、アプリの起動の間に NSUUID を保存する必要があります。それが役立つことを願っています

于 2015-01-10T16:35:57.913 に答える