2010-07-09 1 views
3

4.0에서 실행되는 Gamekit 응용 프로그램은 GKSession 개체 제거를 올바르게 처리하지 못합니다. 피어 연결이 끊어 세션이 (애플 데모에로) 정리하면, 3.1.3 또는 3.2에서 실행 :GameKit에서 4.0 시간 동안 준비가되지 않았습니까? 광고 서비스 중지

[gkSession disconnectFromAllPeers]; 
[gkSession setAvailable:NO]; 
[gkSession setDelegate:nil]; 
[gkSession setDataReceiveHandler:nil withContext:nil]; 

그런 다음 다른 피어 상태 변화와 동료의 테이블보기를 수신하는 업데이트 할 수 있습니다.

내 응용 프로그램에서 하나의 피어가 서버로 시작되고 다른 피어가 클라이언트로 시작됩니다. 클라이언트의 서버 연결 요청과 클라이언트의 이름이 서버의 플레이어 목록에 나타납니다. 서버가 요청을 수락하기로 선택하면 세션 연결이 설정되고 게임을 플레이 할 수 있습니다. 그러나 서버가 요청을 수락하기 전에 클라이언트가 종료되면 클라이언트는 세션을 정리하고 (위와 같이) 상태 변경을 수신하면 서버 피어 목록에서 클라이언트가 사라집니다. 이것은 놀랍게도 3.1-3.2에서 작동합니다

4.0에서 실행되는 동일한 응용 프로그램을 실행하면 서버와 클라이언트에서 오류가 발생하고 피어가 상태 변경을 수신하는 데 오랜 시간이 걸리고 응용 프로그램이 충돌 할 때 응용 프로그램이 충돌합니다 어떤 에러도없이 (NSZombieEnabled = YES와 빌드 인수). 서버는 클라이언트로부터 "상태 변경"메시지를 수신하지 않습니다. 대신, 다음과 같은 오류가 발생하고 있습니다 : 키 오류가 내가 무슨 생각으로

Thu Jul 8 23:27:26 unknown com.apple.mDNSResponder[18] <Notice>: BTLocalDeviceRemoveData: 60 byte key, 18 byte value 
Thu Jul 8 23:27:26 unknown MobileBluetooth[29] <Notice>: BTLocalDeviceRemoveData - BT_ERROR_INVALID_HANDLE 
Thu Jul 8 23:27:26 unknown com.apple.mDNSResponder[18] <Notice>: Call to BTLocalDeviceRemoveData failed with error 7 
Thu Jul 8 23:13:39 unknown mDNSResponder[18] <Error>: external_stop_advertising_service: 18 00Z1Tud0A\\.\\.Tonberry\M-b\M^@\M^Ys\\032iPhone._1htnu3uko0uvsp._udp.local. TXT txtvers=1\M-B\M-&state=A 
Thu Jul 8 23:13:39 unknown MobileBluetooth[29] <Notice>: BTLocalDeviceRemoveData - BT_ERROR_INVALID_HANDLE 

:

Tue Jul 13 21:04:50 Tonberry com.apple.mDNSResponder[21] <Notice>: Call to BTDiscoveryAgentStopScan failed with error 400 

세션처럼 나에게 보이는 사용할 수없는 이루어지고 있지 않습니다 (오류 서비스를 광고 중지에) . 실제 충돌 :

Thread 3 Crashed: 
0 GameKitServices     0x06352f90 gckSessionChangeStateCList + 411 
1 GameKitServices     0x0635b49c gckSessionRecvProc + 1474 
2 libSystem.B.dylib    0x981c181d _pthread_start + 345 
3 libSystem.B.dylib    0x981c16a2 thread_start + 34 

진행중인 전체 응용 프로그램에 버그가 있습니다. 응용 프로그램 자체가 완료되었으며 거의 ​​제출 준비가되어 3.1.3/3.2에서 제대로 실행되지만 4.0의 Gamekit 현재 상태에서는 더 이상 제출할 수 없습니다. 대단히 실망했고이 버그 보고서가 앞으로 도움이되기를 바랍니다. 누구든지이 오류를 이해하거나 내가 잘못했을 경우 나는 매우 감사 할 것입니다.

가능한 경우 도움을 받으십시오. 나는이 응용 프로그램에 수건을 던지려고하고 있으며 너무 가깝습니다.

+0

실제로 이것은 알려진 버그라는 사과를 받았습니다. 모든 해결 방법은 현상금을받습니다. – typeoneerror

+2

4.1의 베타 버전으로 수정되었는지 확인하십시오. 제출하려면 몇 주가 걸릴 수 있습니다. (4.1 및 3-3.2에만 해당). –

+0

버그는 4.1에서 수정되었습니다. 어제 밤에 그걸 만들었 어. 문제는 여전히 연결 해제를 알리는 데 15 ~ 30 초가 걸립니다. 뭔가가 여전히 옳지 않습니다. 진행! 당신이 대답 했어야 했어! 기회는 당신의 "시도 4.1"대답은 당신에게 500 명의 담당자를 거칠지도 모릅니다;) – typeoneerror

답변

1

내 제안은 궁극적 인 사전 릴리스 빌드 4.1을 사용하고 "새로운"문제점 (수정되지 않은 기존 버그를 다시 열거 나 새 버그를 생성 함)을보고하는 것입니다. 그것은 최종 릴리스 이전에 문제를 완전히 해결하거나 Apple에서 괜찮은 해결책을 얻으려고 가장 좋은 방법입니다.

+0

그래, 총알을 물지 않으면 안되기 때문에 슬프게도. 당신의 500을 즐겨라!: D – typeoneerror

+0

@Typeoneerror : 큰 감사 : D –

1

이 문제에 대한 도움을 얻으려면 4.0.x에서 문제를 해결할 수있는 해결 방법을 찾으십시오 (4.1에서는 문제를 해결하지만 연결 해제 시간은 해결하지 않음). 모든 것을 자동 수락하면됩니다. 누군가가 connectToPeer :와 GameKit 연결을 요청하면이를 받아들입니다. 사용자에게 선택 옵션을 제공하지 마십시오. 설정된 연결에서 피어를 연결 해제하면 즉시 서버에 알립니다. 연결을 "사용 가능"상태로두면 서버가 손상됩니다. 일찍 연결하고 자주 받아들입니다!