2011-12-09 13 views
8

Czy GameKit pozwala zaprosić konkretnego znajomego Game Center na mecz, programowo, tzn. Bez prezentacji GC ViewController? Poniższa dokumentacja handleInviteFromGameCenter zdaje się sugerować, że można wypełnić GKMatchRequest.playersToInvite i używać go z [GKTurnBasedMatch findMatchForRequest]:Zapraszanie programisty gry Game Center na mecz programowo

Gdy delegat otrzyma tę wiadomość, aplikacja powinna utworzyć nowy obiekt GKMatchRequest i przypisania parametru playersToInvite do właściwości playersToInvite żądania dopasowania. Następnie twoja aplikacja może wywołać metodę klasy GKTurnBasedMatch findMatchForRequest: withCompletionHandler: aby znaleźć dopasowanie programowo lub może użyć żądania do utworzenia nowego kontrolera GKTurnBasedMatchmakerView, aby pokazać interfejs użytkownika odtwarzaczowi.

Ale jestem stwierdzenia, że ​​kiedy findMatchForRequest nazywa mój blok zakończenia meczu z zaludnionym, identyfikator GameCenter zdałem do niego nie jest ustawiony jako 2 gracz. Zamiast tego jest pusty i status jest "dopasowany". I dlatego, gdy wołam endTurnWithNextParticipant, to się uda, ale zaproszenie nie zostanie odebrane na moim drugim urządzeniu. Ilustruje to, co robię:

GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease]; 
request.minPlayers = 2; 
request.maxPlayers = 2; 
request.playersToInvite = [NSArray arrayWithObjects: otherPlayerGCID,nil ]; 

[GKTurnBasedMatch findMatchForRequest:request 
        withCompletionHandler:^(GKTurnBasedMatch *match, NSError *error) 
{ 
    if (error) 
     NSLog(@"returned from fimdmatch but with error"); 
    else if (match != nil) { 
     NSLog(@"match returned success and match populated"); 
     NSArray* otherPlayers = [match participants]; 
     if (otherPlayers.count>1) { 
      NSData* placeholder = [@"no data" dataUsingEncoding:NSUTF8StringEncoding]; 
      [match endTurnWithNextParticipant:[otherPlayers objectAtIndex:1] 
        matchData:placeholder 
        completionHandler:^(NSError *error) 
      { 
       if (error) 
       NSLog(@"returned from END TURN but with error"); 
       else 
       NSLog(@"returned from END TURN successfully"); 
      }];  

     } 
    } 
    else 
     System::log("match returned success but match NOT populated"); 
}]; 

I jak osoba, która wydaje się mieć podobny problem tutaj Game Center inviting friends progammatically, jeśli wstawić połączenia do kontrolera widoku, w moim przypadku GKTurnBasedMatchmakerViewController, wszystko wydaje się działać.

Dzięki.

AKTUALIZACJA: ja widziałem w prezentacji jabłko programisty na turowej GC, wzmianki o czymś w stylu: „Jeśli chcesz, aby zaprosić znajomego GC, pytamy, że można przejść przez kontrolera widoku GC

.

Każdy wgląd doceniona ponownie Dzięki

+0

Czy to nadal działa w iOS9? Właśnie zadałem podobne pytanie: http://stackoverflow.com/questions/36728503/gkmatchmaker-findmatchforrequest-invite-never-received – mark

Odpowiedz

7

chcielibyście podzielić się dowiedziałem na ten temat.. Jak z iOS 5 nie jest sposobem, aby zaprosić znajomego game center do gry bez konieczności przechodzenia przez predefiniowanego przepływu GKTurnBasedMatchmakerViewController , który jest zoptymalizowany pod kątem rozpoczęcia dopasowania w czasie rzeczywistym, prowadząc użytkownika przez trzy różne ekrany:

Po tym wezwanym do tego poparciu Apple Dev, wysłałem żądanie funkcji, aby móc wywołać prosty, jednostronicowy kontroler widoku, który pozwoliłby użytkownikowi wysłać wiadomość z zaproszeniem/poleceniem gry przez centrum gier .

Aktualizacja dla iOS 6: radością informujemy, że wygląda na to, co zostało uwzględnione w iOS 6. Mój oryginalny programowy (non-UI) Powyższy przykład działa teraz jak pierwotnie oczekiwano.

+0

Drat! Jestem w tej samej sytuacji i miałem nadzieję, że tak nie jest. –

+1

Dzięki za aktualizację, potknąłem się o ten brak dokumentacji na GKTurnBasedMatch :(Dziwne, ponieważ mam aplikację YatzyAddict i nie wydaje mi się, że używam standardowego kontrolera widoku dla wielu graczy. ograniczenie piaskownicy – Peter

+0

Jeśli nie używasz standardowego kontrolera widoku, prawdopodobnie nie używa GKMatchmaker do wyszukiwania dopasowań, faktycznie skontaktowałem się z zespołem programistów dla Carcassonne i potwierdzili, że używają własnego systemu. –

Powiązane problemy