Таким образом, я начал очень расстраиваться этим (почти волшебным образом, предупреждения об устаревании начали появляться на моей консоли вчера). Apple, похоже, не говорит о том, как объект может быть установлен как вещь, которая реализует новый протокол GKLocalPlayerListener.
Вот как я это сделал. Только после аутентификации моего локального игрока я зарегистрировал объект, который реализует протокол GKLocalPlayerListener (в данном случае self) в качестве Listener. Я тестировал, как мое приложение отвечает на те же события Game Center, и оно ответило соответствующим образом. Я считаю, что это правильный способ сделать это, хотя я все еще сомневаюсь, какое место лучше всего регистрировать слушателя. Я считаю, что имеет смысл сделать это после того, как игрок будет аутентифицирован, но он может быть более тонким, чем это.
NSLog(@"Authenticating local user...");
__weak GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler =
^(UIViewController *viewController,
NSError *error) {
[self setLastError:error];
if (localPlayer.isAuthenticated) {
[localPlayer registerListener:self];
} else if(viewController) {
[self presentViewController:viewController];
} else {
}
};
Вы также не должны регистрировать слушателя более одного раза. Это похоже на регистрацию наблюдателя для локального уведомления. Если вы делаете это более одного раза, ваши методы слушателя в конечном итоге получают вызов более одного раза.
Я считаю, что метод, который заменяет:
-(void)handleInviteFromGameCenter:(NSArray *)playersToInvite;
Является ли следующее:
-(void)player:(GKPlayer *)player didRequestMatchWithPlayers:(NSArray *)playerIDsToInvite;
От чтения документации, есть упоминание о создании GKMatchMakerViewController (или что-то подобное, что немного больше, сделанный на заказ), когда это вызвано. Я знаю, что это то, что я делал в предыдущих версиях моего приложения, поэтому он не может быть так далеко. Структура метода также весьма схожа.
Другие испытания подтвердят, что это действительно правильный способ приближения к новому протоколу, но пока это кажется правильным. Я продолжу это до тех пор, пока не будет указано иначе.
Я понял, как много. Я буду придерживаться устаревания в ожидании дальнейшей документации. Благодаря! –