2

GKPeerPickerController を使用せず、両側の「接続ボタン」を押さずに、GKSession を使用して 2 台の iPhone 間の Bluetooth 接続を確立したいと考えています。

私は次のコードを使用しています:

currentSessionAuto = [[GKSession alloc] initWithSessionID: @"instant-friend-auto" 
currentSessionAuto.delegate = self;
currentSessionAuto.available = YES;
currentSessionAuto.disconnectTimeout = 5;
[currentSessionAuto setDataReceiveHandler: self withContext:nil];

アプリケーションが両側で開始されると、 - (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)stateが両側で呼び出され、状態は「GKPeerStateAvailable」になります。

「クラシック」アプリでは、接続を求めるポップアップが両側に表示され、ほとんどの場合、両方の「ユーザー」が同時に接続ボタンをクリックすることはありません。

「自動接続」が必要な場合は、一方の側でのみセッションを開始するメカニズムが必要です。このメカニズムがないと、2 つのセッションが開始されてエラーが発生するためです。

任意のアイデア/ヘルプ?

4

2 に答える 2

1

アイデアは次のとおりです。peerIDが最も低いピアを接続します。PeerID文字列をintに変換して比較する必要がありますが、これは優れたタイブレーカーになるはずです。

于 2012-11-06T00:43:35.487 に答える