경우에 따라 findMatchForRequest:withCompletionHandler:
이 13 또는 GKErrorMatchRequestInvalid
: : "일치 요청이 유효하지 않아 요청한 작업을 완료 할 수 없습니다."오류가 반환되는 경우가 종종 있습니다.언제 GKMatchRequest가 '유효하지 않음'입니까?
문서는 말한다 :
이 경기 요청의 속성을 이행 할 불가능
을 GKErrorMatchRequestInvalid. 예를 들어 최소 플레이어 수는 이며 최대 플레이어 수보다 클 수 없습니다. iOS 4.0 이상에서 사용할 수 있습니다.
나는 결코 시도에서 발생GKErrorMatchRequestInvalid
생각 , 즉, 직접 엑스 코드에서 실행 한 후, 만 2/3 일/... 시도. 장치 또는 시뮬레이터에서 발생합니다. 그래서 저는 이 일을 잘못하고 있다고 가정합니다. 철저한 목록에 GKMatchRequest
이 유효하지 않은 조건 목록이 있습니까?
는 findMatchForRequest:
을 불러 GKErrorMatchRequestInvalid
복구하지만, 성공 결코 시도 : 나는 match
에 '무효'모든 추가 findMatchForRequest:
통화도 '무효'match
로 돌아 일단. [[GKMatchmaker sharedMatchmaker] cancel]
과 [[GKMatchmaker sharedMatchmaker] finishMatchmakingForMatch:
을 사용하여이 문제를 해결하려고합니다 ... 분명히 match
에서 finishMatchmakingFor:
까지 유효하지 않습니다.
매치 메이킹은 싱글 톤에서 발생합니다 (중요하다면). 관련 코드는 다음과 같습니다.
GKMatchRequest *request = [GKMatchRequest new];
request.minPlayers = 3;
request.maxPlayers = 4;
[[GKMatchmaker sharedMatchmaker] findMatchForRequest:request withCompletionHandler:^(GKMatch *match, NSError *error)
{
if (error)
{
if (error.code == 503 ||
error.code == GKErrorMatchRequestInvalid ||
error.code == GKErrorNotAuthenticated ||
error.code == GKErrorCommunicationsFailure ||
error.code == GKErrorUnknown ||
error.code == GKErrorInvalidPlayer ||
error.code == GKErrorInvalidParameter ||
error.code == GKErrorAuthenticationInProgress)
{
[self.delegate restartMatchmaking];
}
}
else if (match)
{
// happy-path
}
}];