まれではありませんが、まれにfindMatchForRequest:withCompletionHandler:
エラー 13 またはGKErrorMatchRequestInvalid
「マッチ リクエストが無効なため、リクエストされた操作を完了できませんでした」が返されることがあります。
ドキュメントには次のように書かれています:
GKErrorMatchRequestInvalid です
マッチ リクエストのプロパティを満たすことができません。たとえば、最小プレーヤー数を最大プレーヤー数より大きくすることはできません。iOS 4.0 以降で利用できます。
1回目の試行、つまりXcodeから起動した直後では決して発生しないと思いますが、2回目/3回目/...の試行でのみ発生します。デバイスまたはシミュレーターのいずれかで発生します。だから私は何か間違ったことをしていると思いますが、何ですか?が無効となる条件の完全なリストはありますか?GKErrorMatchRequestInvalid
GKMatchRequest
GKErrorMatchRequestInvalid
をリコールして から回復しようとしましたfindMatchForRequest:
が、成功しませんでした。一度 'invalid' を取得すると、それ以降の呼び出しもmatch
すべてfindMatchForRequest:
match
'invalid' で返されます。[[GKMatchmaker sharedMatchmaker] cancel]
と...の両方を使用してこれを改善しようとしていますが、有効なto[[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
}
}];