偶尔,findMatchForRequest:withCompletionHandler:会返回错误13或GKErrorMatchRequestInvalid:“请求的操作无法完成,因为匹配请求无效。”
文档只说:
GKErrorMatchRequestInvalid
匹配请求的属性无法满足。例如,最小玩家数量不能大于最大玩家数量。在iOS 4.0及更高版本中可用。
我认为GKErrorMatchRequestInvalid永远不会在第一次尝试时出现,也就是说,直接从Xcode启动后,而只发生在第二次/第三次/...试一试。在设备或模拟器上发生。因此,我假设我做错了什么,但又是什么呢?GKMatchRequest是否有一份 exhaustive list of is invalid?
尝试通过调用GKErrorMatchRequestInvalid从findMatchForRequest:中恢复,但从未成功:一旦我得到一个'invalid' match**,,那么所有后续的** findMatchForRequest: findMatchForRequest:调用也会返回一个'invalid' match.试图通过同时使用[[GKMatchmaker sharedMatchmaker] cancel]和[[GKMatchmaker sharedMatchmaker] finishMatchmakingForMatch:来解决此问题...显然,我甚至没有有效的finishMatchmakingFor: match。
匹配发生在单例中(如果这很重要)。相关代码如下:
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
}
}];发布于 2014-12-05 06:16:08
我得到了同样的东西。做了同样的测试。这似乎是真的,“请求不能被提交”和请求内容无关的都是无效/不正确的。
可疑原因:
接受
发布于 2019-05-21 05:06:58
有同样的问题,并意识到我有minPlayers=1。
在设置了minPlayers=2之后,一切都运行正常。希望这能有所帮助。
发布于 2016-05-16 10:16:40
我遇到了同样的问题,并通过调用[[GKMatchmaker sharedMatchmaker] cancel];解决了这个问题。
这会在- (void)findMatchForRequest:(GKMatchRequest *)request withCompletionHandler:(void(^__nullable)(GKMatch * __nullable match, NSError * __nullable error))completionHandler;完成处理程序中触发错误。
NSLocalizedDescription = "The requested operation has been canceled or disabled by the user.";希望这能有所帮助。
https://stackoverflow.com/questions/27302013
复制相似问题