私はマルチレイヤーゲームを書いていて、GKSessionの2つのインスタンスを作成すると思いました。1つのセッションはGKSessionModeServerに設定され、もう1つのセッションはGKSessionModeClientに設定されます。クライアントピアでpeersWithConnectionState:を呼び出すと、サーバーが適切に報告され、各セッションのピアIDが異なります。しかし、サーバーに接続しようとすると、「送信中の招待を保留中に失敗しました」というエラーの説明が記載されたメッセージsession:connectionWithPeerFailed:withError:が表示されます。
Wi-Fiが利用可能な場合、2つのGKSessionの使用が機能します。Bluetoothにはこれを許可しない制限があるのではないかと思いますが、よくわかりません。サーバー上で単一のGKSessionを使用するようにコードを書き直すことはできますが、他の誰かが2つのインスタンスで動作することがわかっている場合は、特別なケースをコーディングしたくありません。
Wi-FiとBluetoothの両方をオフにすると、「ネットワークが利用できません」というエラーが表示されます。どちらかがオンになっているとわかりません。これは、別のiPhoneが近くにある場合にも機能しないと私に信じさせます。