0

私はマルチレイヤーゲームを書いていて、GKSessionの2つのインスタンスを作成すると思いました。1つのセッションはGKSessionModeServerに設定され、もう1つのセッションはGKSessionModeClientに設定されます。クライアントピアでpeersWithConnectionState:を呼び出すと、サーバーが適切に報告され、各セッションのピアIDが異なります。しかし、サーバーに接続しようとすると、「送信中の招待を保留中に失敗しました」というエラーの説明が記載されたメッセージsession:connectionWithPeerFailed:withError:が表示されます。

Wi-Fiが利用可能な場合、2つのGKSessionの使用が機能します。Bluetoothにはこれを許可しない制限があるのではないかと思いますが、よくわかりません。サーバー上で単一のGKSessionを使用するようにコードを書き直すことはできますが、他の誰かが2つのインスタンスで動作することがわかっている場合は、特別なケースをコーディングしたくありません。

Wi-FiとBluetoothの両方をオフにすると、「ネットワークが利用できません」というエラーが表示されます。どちらかがオンになっているとわかりません。これは、別のiPhoneが近くにある場合にも機能しないと私に信じさせます。

4

1 に答える 1

2

コードを書き直して、ホスティング デバイスに GKSession を 1 つだけ作成し、GKSession を使用せずにサーバーとローカル クライアント間でデータを直接送信します。最終的にこれを 2 つのデバイスでテストすることができ、それらは互いに適切に接続されました。したがって、レッスンは、ホスト上に 1 つの GKSession のみを配置することであり、Bluetooth と Wi-Fi で動作します。

于 2011-10-14T13:29:42.087 に答える