2011-10-07 1 views
0

나는 mutliplayer 게임을 쓰고 있는데 GKSession의 두 인스턴스를 만들 것이라고 생각했습니다. 한 세션은 GKSessionModeServer로 설정되고 다른 세션은 GKSessionModeClient로 설정됩니다. 클라이언트 피어에서 peersWithConnectionState :를 호출하면 서버가 제대로보고되고 각 세션마다 다른 피어 ID가 있습니다. 그러나 서버에 연결하려고하면 connectionWithPeerFailed : withError : 오류 설명과 함께 "outgoing invitation을 보류 중입니다."라는 메시지 세션이 수신됩니다.블루투스를 사용할 때 동일한 장치에 GKSession 인스턴스 두 개를 둘 수 있습니까?

Wi-Fi를 사용할 수있을 때 두 개의 GKSessions를 사용합니다. 나는 Bluetooth를 사용할 수없는 몇 가지 제한 사항이 있음을 확신하지만 확실치 않습니다. 서버에서 하나의 GKSession을 사용하도록 코드를 다시 작성할 수는 있지만 다른 인스턴스에서 두 인스턴스를 사용하는 경우 특수한 경우를 코딩하지 않을 것입니다.

Wi-Fi와 Bluetooth를 모두 끄면 "네트워크를 사용할 수 없습니다."라는 오류 메시지가 나타납니다. 어느 쪽인가가 켜지면 나는 얻지 못한다. 이것은 다른 아이폰이 근처에있을 때 작동하지 않을 것이라고 생각합니다.

답변

2

코드를 다시 작성하여 GKSession을 사용하지 않고 호스팅 장치에 하나의 GKSession 만 만들고 서버와 로컬 클라이언트간에 데이터를 직접 전송합니다. 마지막으로 두 개의 장치로 이것을 테스트 할 수 있었고 서로 제대로 연결될 수있었습니다. 따라서 호스트에 GKSession이 하나만있는 것이 교훈이며 Wi-Fi뿐 아니라 Bluetooth에서도 작동합니다.

관련 문제