GKMatch - В режиме реального времени - приглашение обработчика
Я пытаюсь создать многопользовательскую игру в реальном времени, используя игровой центр, программно. Моя проблема заключается в отсутствии документации, так как старый inviteHandler
был объявлен устаревшим
Первое, что я делаю, это аутентификация:
- (void) authenticateLocalPlayer
{
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
__weak GKLocalPlayer *blockLocalPlayer = localPlayer;
localPlayer.authenticateHandler = ^(UIViewController *receivedViewController, NSError *error)
{
if (receivedViewController != nil)
{
[self presentViewController:receivedViewController animated:YES completion:nil];
}
else if (blockLocalPlayer.isAuthenticated)
{
[blockLocalPlayer registerListener:self];
}
};
}
После этого я начинаю процесс приглашения, как написано на Apple Docs.
- (void)invitePlayers:(NSArray *)friendsArray
{
GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 2;
request.playersToInvite = friendsArray;
request.inviteMessage = @"Your Custom Invitation Message Here";
request.inviteeResponseHandler = ^(NSString *playerID, GKInviteeResponse response)
{
[self updateUIForPlayer: playerID accepted: (response == GKInviteeResponseAccepted)];
};
}
Я реализовал следующие методы, но они никогда не называются:
- (void)player:(GKPlayer *)player didAcceptInvite:(GKInvite *)invite
- (void)player:(GKPlayer *)player didRequestMatchWithPlayers:(NSArray *)playerIDsToInvite
Как я могу позволить другому игроку получить приглашение и ответить на него? На Apple Docs демонстрируется старый устаревший способ.
1 ответ
Попробуйте сначала зарегистрироваться на GKLocalPlayer
слушатель для того, чтобы получить вызов через эти методы:
- (void)registerListener:(id<GKLocalPlayerListener>)listener
который должен соответствовать этому протоколу:GKLocalPlayerListener