Многопользовательский игровой центр через 3G / WWAN - тайм-аут getLocalConnectionData - PullRequest
1 голос
/ 10 января 2012

У меня есть многопользовательская игра, которая использует 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 timed» из строки в первом блоке dispatch_async. Если я использую NSLog для вывода кода ошибки, это 503.

Если у вас есть GameCenter мультиплеер для работы через 3G и вы не хотите разглядывать мой код, не стесняйтесь делиться вашим рабочим кодом, и я постараюсь выяснить, где у меня не получается! Спасибо!

...