Многопользовательский режим Game Center через 3G/WWAN - тайм-аут getLocalConnectionData
У меня есть многопользовательская игра, которая использует GameCenter для работы в сети. Сетевые игры через Wi-Fi с использованием GKMatch работают отлично, но через 3G они никогда не подключаются. мой
-[GKMatchmaker findMatchForRequest:
withCompletionHandler:]
блок обработчика завершения вызывается с кодом ошибки 503, который не является GKErrorDomainCode
в соответствии с этим заголовком. Вместо этого он выглядит как код ошибки HTTP.
Вот мой код:
//GKLocalPlayer is already authenticated at this point
_matchRequest = [[[GKMatchRequest alloc] init] autorelease];
[_matchRequest setMinPlayers: 2];
[_matchRequest setMaxPlayers: 2];
GKMatchmaker *matchmaker = [GKMatchmaker sharedMatchmaker];
[matchmaker findMatchForRequest: _matchRequest
withCompletionHandler:
^(GKMatch *match, NSError *error) {
if (error)
{
if ([error code] != GKErrorCancelled)
{
dispatch_async(dispatch_get_main_queue(), ^{
[[[[UIAlertView alloc] initWithTitle:
NSLocalizedString(@"Can't find match.", @"Alert title for when automatching failed")
message: [error localizedDescription]
delegate: nil
cancelButtonTitle: NSLocalizedString(@"OK", @"Button text for OK button")
otherButtonTitles: nil] autorelease] show];
});
}
else
{
NSLog(@"Canceled :(");
}
}
else
{
dispatch_async(dispatch_get_main_queue(), ^{
// do some main-thread stuff specific to my app
_match = [match retain];
[_match setDelegate: self];
});
}
} ];
}
SNJGKLocalPlayerManager
просто регистрирует игрока в GameCenter. Типичный выход из этого будет UIAlertView
говоря "Операция не может быть завершена. getLocalConnectionData
тайм-аут "из строки в первом блоке dispatch_async. Если я использую NSLog
чтобы вывести код ошибки, это 503.
Если вы получили GameCenter
мультиплеер, работающий через 3G и не желающий разглядывать мой код, не стесняйтесь делиться вашим рабочим кодом, и я постараюсь найти, где у меня не получается! Спасибо!