2014-09-06 4 views
0

GameCenter로 게임을 개발 중이며 AdHoc (Beta) 배포판에서 여러 테스터가 사용 중이므로 샌드 박스를 사용하여 테스트 준비를 마쳤습니다.예측할 수없는 GameCenter 연결 오류 [Sandbox]

GameCenter에서 예기치 않은 연결이 끊깁니다. 예를 들어, GKLeaderboard.loadScoresWithCompletionHandler을 사용하여 최고 순위 점수를로드하면 플레이어가 인증되지 않았 음을 나타내는 NSError을 반환합니다 (오류 코드는 #6입니다. 세션 시작시 인증되었고 동일한 종류의 이전 요청이 성공 했음에도 불구하고).). 경우에 따라서는 점수를 리더 보드에보고하려고 할 때 GKTurnBasedMatch을 성공적으로 마친 후에도 게임이 끝날 때까지 가끔씩 발생합니다. 내 베타 테스터의 몇 가지에

그것은 자주 내 아이 패드에서 발생
  1. (하루에 여러 번),하지만 내 아이폰 또는 기타 특정 일어난 적이있다 :

    몇 가지 내가 나타났습니다 베타 테스터들과 함께 할 수 있습니다. 예를 들어, 내 iPhone 대 내 iPad로 게임을 할 수 있으며, iPad는이 오류를 매우 일관되게 만나게 될 것입니다.하지만 iPhone은 결코 그렇게하지 않을 것입니다.

  2. 가끔은 다른 시간보다 악화 된 것 같습니다. 예를 들어, 월요일 밤에 싱글 턴 기반 매치도 할 수 없었고, 베타 테스터도 많은 문제가 있었지만 화요일 밤에는 괜찮 았습니다.
  3. 인증 변경 메시지가 전송되지 않았습니다 (즉, setAuthenticateHandler 블록이 호출되지 않았거나 GKPlayerAuthenticationDidChangeNotificationName 게시 됨). 내 첫 번째 징후는 게임 센터 요청이 오류로 실패한다는 사실입니다.

위이는 샌드 박스는 단순히 (예를 들어,이 월요일에 오버로드) 신뢰할 수있는 문제가 같은 날을 느낄 수 합니다. 그러나 라이브 어플리케이션에서 이런 종류의 경험을 할 수는 없습니다. 이러한 문제는 샌드 박스는 것을

  1. 아무도 그 게임 센터는 생산에서 실제로 신뢰성을 확인 할 수 있으며, :

    그래서, 내 질문은이 부분입니까? 또는 적어도 내 코드에 문제가 없는지 확인하십시오.

  2. 어떻게 이런 종류의 오류를 방어 할 수 있습니까? 나는 그러한 오류가 발생했을 때 [[GKPlayer localPlayer] setAuthenticateHandler:...]으로 전화를 시도했지만 사용자를 재 인증하지 않는 것처럼 보입니다.
+1

:

는 또한 애플 개발자 포럼에서이 스레드를 고려할 수 있습니다. 예를 들어, 너무 많은 업적을 보내거나, 도전 과제를 삭제/전송하는 등의 경험이 있습니다. 이전 요청이 완료 될 때까지 기다리지 않고 게임 센터 요청을 연속적으로 보내면 더 자주 발생하기 때문에 DoS 공격 메커니즘과 유사합니다. 내 요청을 일괄 처리하고 이전 요청이 새로운 요청을 보내기 전에 완료되었는지 확인하여 해결했습니다. 희망이 도움이됩니다. – Dario

+1

@Dario 매우 도움이된다. 고마워.나는 그들이 클라이언트를 제한하는 속도일지도 모른다고 생각하지 않았고, 나는 확실히 많은 요청을 연속해서했다. –

답변

0

비슷한 문제가 발생했습니다. 한 가지 이유는 GameCenter가 주 스레드에서 일부 연결 유지 메시징을 실행하는 것 같습니다. 코드가 잠시 후에도 차단되면 연결이 끊어 질 수 있습니다. 스레드를 확인하십시오. 요청과 게임 센터를 스팸 때이 샌드 박스에서 비슷한 동작을 보았다

https://devforums.apple.com/thread/199452?tstart=0