Zaproszenie GKMatchRequest nie jest wyświetlane w innym urządzeniu
Dzięki aktualizacjom API GameKit w iOS 6, w końcu mogę zaimplementować moją turową grę planszową tak, jak powinna być, wraz z limitami czasu gry i lepszym programowym tworzeniem meczów. Mam jednak problem, którego nie mogę rozwiązać. Pragnę, aby Game Center działało całkowicie niewidocznie dla użytkownika końcowego, aby wszystko było programowe i używało moich własnych interfejsów. Dlatego używam własnego niestandardowego widoku tabeli do wyświetlania dopasowań, a nie domyślnego kontrolera GKTurnBasedMatchmakerViewController. W tej chwili nie mam problemu z wyświetlaniem otwartych dopasowań za pomocą metody -loadMatchesWithCompletionHandler:. Używam również niestandardowego ekranu, aby utworzyć dopasowanie, z bezpośrednim stworzeniem do automatycznego dopasowania (nie jest to problem) i widokiem tabeli, który ładuje przyjaciół Game Center lokalnego odtwarzacza na zaproszenie. Ponieważ atrybut playerToInvite można teraz wypełnić identyfikatorami playerID, jest to możliwe w systemie iOS 6.
Moim głównym problemem jest obsługa zaproszenia po stronie odbiorcy. Wysyłam zaproszenie z następującym kodem
-(void)invitarAmigoMio:(NSArray*)losAmigos
{
GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 2;
request.defaultNumberOfPlayers=2;
request.playersToInvite = losAmigos;
request.inviteMessage = @"Your Custom Invitation Message Here";
request.inviteeResponseHandler = ^(NSString *playerID, GKInviteeResponse
response)
{
if (response==GKInviteeResponseAccepted)
{
NSLog(@"INVITACION ACEPTADA");
}
else
{
NSLog(@"INVITACION RECHAZADA");
}
};
}
Mam delegata, który obsługuje powiadomienia. Następujący kod jest uruchamiany po uwierzytelnieniu użytkownika
-(void)registroNotificaciones
{
NSLog(@"registroNotificaciones");
[GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite* acceptedInvite, NSArray *playersToInvite)
{
if(acceptedInvite != nil)
{
// Get a match for the invite we obtained...
[[GKMatchmaker sharedMatchmaker] matchForInvite:acceptedInvite completionHandler:^(GKMatch *match, NSError *error)
{
if(match != nil)
{
NSLog(@"match != nil: ");
}
else if(error != nil)
{
NSLog(@"ERROR: From matchForInvite: %@", [error description]);
}
else
{
NSLog(@"ERROR: Unexpected return from matchForInvite...");
}
}];
}
};
NSLog(@"FIN registroNotificaciones");
}
Dlaczego powiadomienia nie są wysyłane lub powiadomienia nie są odbierane Czy istnieje inny sposób wysyłania powiadomień o zaproszeniu do gry? Sprawdziłem, a moje konta piaskownicy Game Center zezwalają na zaproszenia i nie wiem, co się dzieje