Приглашение GKMatchRequest не отображается на другом устройстве
Благодаря обновлениям API GameKit в iOS 6 я наконец-то смог реализовать свою пошаговую настольную игру так, как она должна быть, с тайм-аутами ходов и улучшенным программным созданием матчей. Однако я сталкиваюсь с проблемой, которую не могу решить. Я хочу, чтобы Game Center работал полностью невидимым для конечного пользователя, чтобы все было программно и использовало мои собственные пользовательские интерфейсы. Поэтому для отображения совпадений я использую свое собственное представление таблицы, а не GKTurnBasedMatchmakerViewController по умолчанию. Прямо сейчас у меня нет проблем с отображением открытых совпадений с помощью метода -loadMatchesWithCompletionHandler :. Я также использую пользовательский экран для создания совпадения с прямым созданием для автоматического сопоставления (не проблема) и табличным представлением, которое загружает друзей Game Center из localPlayer для приглашения. Так как атрибут PlayersToInvite теперь может быть заполнен playerID, это возможно в iOS 6.
Моя главная проблема - обработка приглашения на стороне получателя. Я отправляю приглашение со следующим кодом
-(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");
}
};
}
У меня есть делегат, который обрабатывает уведомления. Следующий код запускается при аутентификации пользователя
-(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");
}
Почему уведомления не отправляются? Или уведомления не принимаются? Есть ли другой способ отправить уведомление, чтобы пригласить играть в игру? Я проверил, и мои учетные записи в песочнице Game Center разрешают приглашения, и я не знаю, что происходит