2

アプリケーションをインストールした後、初めて Bluetooh でデバイスを接続しようとすると、接続に時間がかかりすぎたり、接続が拒否されたりすることがあります。

これが私のコードです:

(void)setUpSession {
    @try {
        if(mTimeOutTimer) {
            [mTimeOutTimer invalidate];
             mTimeOutTimer = nil;
        }

        self.mConnectionState = ConnectionStateDisconnected;
        if(!mPeerPickerController) {
            mPeerPickerController = [[GKPeerPickerController alloc] init];
            mPeerPickerController.delegate = self;
            mPeerPickerController.connectionTypesMask = GKPeerPickerConnectionTypeNearby;
        }

        //Present Peer Picker.
        [mPeerPickerController show];
    }
    @catch (NSException *exception) {
        NSLog(@"Expception Occured at path -> BlueToothManager/setUpSession");
        NSLog(@"Exception Name -> %@",[exception name]);
        NSLog(@"Exception Reason -> %@",[exception reason]);
    }
}

(GKSession *)peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type {
    NSString *deviceName = [[UIDevice currentDevice] name];
    GKSession* gkSession = [[GKSession alloc] initWithSessionID:@"BluetoothStreamingVideo" displayName:deviceName sessionMode:GKSessionModePeer];
    gkSession.delegate = self;
    if(self.mGameKitSession) {
        [self.mGameKitSession disconnectFromAllPeers];
        if([self.mGameKitSession isAvailable]) {
            [self.mGameKitSession setAvailable:FALSE];
        }
        [self.mGameKitSession setDataReceiveHandler:nil withContext:nil];
        self.mGameKitSession = nil;
    }
    self.mGameKitSession = gkSession;
    return [gkSession autorelease];
}

ただし、接続が確立されると、次回の接続は長時間ならずにうまく設定されます。

4

0 に答える 0