Возвращает ли когда-нибудь [GKLocalPlayer localPlayer] действительную информацию о первом вызове? - PullRequest
1 голос
/ 01 сентября 2011

Какой смысл звонить ...

GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

Насколько я могу судить, это всегда возвращает объект, если все поля будут установлены в ноль, независимо от начала текущего игрока в системе. Пока не позвонишь ...

[localPlayer authenticateWithCompletionHandler:^(NSError *error)

... что вы получаете игрока. Является ли этот вызов только для получения объекта, чтобы затем вызвать authenticateWithCompletionHandler: from?

Можно ли предположить, что при первом же вызове у него никогда не будет действительной информации об игроке? Я предполагал, что в нем есть информация об игроке, зарегистрированном в Game Center на устройстве, но это не так (это было бы слишком удобно).

Что должна делать игра во время ожидания действительного идентификатора игрока? При плохой связи игроки могли выполнить достижения и даже получить счет. Я знаю, что вы должны сохранять информацию до тех пор, пока не будет установлено соединение, но без идентификатора игрока я не могу сохранить ее с тегом для конкретного игрока, как вы это сделали бы во время простого сбоя при отправке счета.

В приведенном выше примере игрок A запускает игру, получает счет и выходит из игры до того, как он когда-либо будет аутентифицирован. Затем игрок B входит в систему и начинает игру и получает счет от игрока A.

Если я сохраню последний идентификатор игрока и просто воспользуюсь им, вы попадете в ситуацию, когда игрок В начинает игру после игрока А, и все результаты переходят к игроку А или теряются для игрока А, когда игрок Б. начинает игру.

Или не стоит беспокоиться о подобных вещах, потому что вероятность <1% когда-либо случится? </p>

Или я просто упускаю простое решение для всего этого?

Game Center - это полный беспорядок. Apple могла бы гораздо лучше справиться с этим API.

...