4

iOS 6 では問題ありません。ペアリングされた Bluetooth デバイスを再接続できます。

私が使う

- (void)retrievePeripherals:(NSArray *)peripheralUUIDs 

そして代表

- (void)centralManager:(CBCentralManager *)central didRetrievePeripherals:(NSArray *)peripherals

ペリフェラルの配列を返します。この配列を繰り返し処理し、各周辺機器に成功して接続します。

iOS 7 では、

- (void)retrievePeripherals:(NSArray *)peripheralUUIDs 

廃止されました。

わかりました、iOS 7 の新しい方法を使用します。

- (NSArray *)retrievePeripheralsWithIdentifiers:(NSArray *)identifiers

このメソッドは、周辺機器の配列を返します。その配列を繰り返し処理し、各周辺機器を接続しようとしましたが、機能していません。

iOS 7 メソッドによって返される周辺機器のログ:

"<CBPeripheral: 0x176e5f50 identifier = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, Name = \"Name\", state = disconnected>"

retrievePeripheralsWithIdentifiers を再度呼び出すと、周辺機器の状態が次のように変わります。

"<CBPeripheral: 0x176e5f50 identifier = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, Name = \"Name\", state = connecting>"

しかし、何も起こりません

iOS 6で動作する非推奨の方法を使用しようとしましたが、同じです。接続なし。

4

4 に答える 4

3

確実にするために、これらの周辺機器に実際にどのように接続しているかを投稿する必要がありますが、新しい iOS 7 の方法には問題はありません。新しいパラメーターCFUUIDRef'sを使用する代わりに (iOS 6 で行ったように) を渡していると想定しています。NSUUID

必要な作業は次のとおりです。

NSUUID *uuid = [[NSUUID alloc]initWithUUIDString:savedUUID];//where savedUUID is the string version of the NSUUID you've saved somewhere

NSArray *peripherals = [_cbCentralManager retrievePeripheralsWithIdentifiers:@[uuid]];

for(CBPeripheral *periph in peripherals)
{
    [_cbCentralManager connectPeripheral:peripheral options:nil];
}

注: 接続状態でスタックしている場合はcancelPeripheralConnection:、周辺機器を接続する前に電話してください。

于 2013-09-25T18:40:18.600 に答える
0

あなたのコードは多くを語っていませんが、取得した周辺機器に接続するには、retrievePeripheralsWithIdentifiers最初にスキャンしてから接続する必要があります。

于 2016-01-25T10:49:43.857 に答える