2

Bluetooth経由で最大3台の外付けiPhoneをコントローラーとして使用するアプリをセットアップしています。すべてが正しく設定されているようで、最初の 2 台のデバイスは正しく接続されますが、3 台目の iPhone を接続しようとすると、接続が拒否されます。

私のコードに何らかの制限や問題がありますか? 3 台目のデバイスが接続できないのはなぜですか?

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI
{
    NSLog(@"Found peripheral: %@\n\twith data: %@", peripheral, advertisementData);

    //Check advertisement data for UUID
    CBUUID* serviceUUID = [CBUUID UUIDWithString:serviceUUIDString];
    NSArray* serviceUUIDs = [advertisementData valueForKey:CBAdvertisementDataServiceUUIDsKey];

    if([serviceUUIDs containsObject:serviceUUID])
    {
        //Valid controller, connect
        NSLog(@"Valid peripheral, connecting...");
        [self.btManager connectPeripheral:peripheral options:nil];
    
        //Save peripheral as player #x
        if(!self.player2)
        {
            self.player2 = peripheral;
        }
        else if(!self.player3)
        {
            self.player3 = peripheral;
        }
        else if(!self.player4)
        {
            self.player4 = peripheral;
        
            //Maximum players connected
            //Stop scanning
            [self.btManager stopScan];
        }
        else
        {
            //Maximum players connected
            //Ignore and stop scanning
            [self.btManager stopScan];
            return;
        }
    
        if(!_peripherals)
            _peripherals = [NSMutableArray arrayWithCapacity:0];
    
        [_peripherals addObject:peripheral];
    }
}

周辺機器を保存して接続を呼び出していますが、実際に接続を完了することはありません。それぞれの iPhone を異なる順序で接続しようとしましたが、プレーヤー 2 またはプレーヤー 3 の場合は 3 つのデバイスすべてが接続されますが、プレーヤー 4 は接続を拒否します。

編集:

接続されているデバイスのいずれかを切断すると、プレーヤー 4 デバイスが接続されます。

4

0 に答える 0