Как получать уведомления о пошаговых матчах GameKit?

Я работаю над пошаговой игрой для iOS, используя новый пошаговый API iOS5.

Один из протоколов делегата, который вам нужно реализовать для этого, — GKTurnBasedEventHandlerDelegate. Один из реализуемых методов — handleTurnEventForMatch. Это из документов Apple по этому методу:

обработатьTurnEventForMatch

Отправляется делегату, когда наступает очередь локального игрока действовать в пошаговом матче.

- (void)handleTurnEventForMatch:(GKTurnBasedMatch *)match

Параметры

match — объект матча, содержащий текущее состояние матча.

Обсуждение

Когда ваш делегат получает это сообщение, игрок принял push-уведомление об уже идущем матче. Ваша игра должна завершить любую задачу, которую она выполняла, и переключиться на информацию о совпадении, предоставленную объектом соответствия.

Большая часть моей игры работает. Я получаю уведомления о перемещениях, полученных указанным выше способом. Я также вижу значки на значках приложений, которые успешно обновляются.

Однако я не получаю никаких других системных уведомлений, когда приходят события хода; ничего не отображается в центре уведомлений и т. д. Нужно ли мне делать что-то вне GameKit, чтобы включить это? Нужно ли мне вручную отправлять локальное уведомление, когда я получаю handleTurnEventForMatch? Документы, кажется, подразумевают, что нет, поскольку выше сказано: «Когда ваш делегат получает это сообщение, игрок принял push-уведомление об уже идущем матче».

Похоже, это означает, что игрок щелкнул push-уведомление, чтобы вызвать этот метод (но, конечно, они никогда не появляются, поэтому я этого не сделал!)

Что мне нужно сделать, чтобы включить push-уведомления в моем приложении для пошаговых событий? Нужно ли мне на самом деле отправлять локальное уведомление, когда я получаю вышеуказанный метод (это, казалось бы, противоречит намерению, учитывая формулировку вышеупомянутого документа).


person John Stewart    schedule 28.10.2011    source источник
comment
Эй, Джон, ты уже понял это? Я собираюсь реализовать все это в игре самостоятельно. Надеюсь, это не слишком ужасно!   -  person livingtech    schedule 07.11.2011
comment
Пожалуйста, проверьте мой вопрос stackoverflow.com /questions/16266089/, я не понимаю, почему я не получаю уведомление на другом устройстве. Может ли проблема быть связана с handleInviteFromGameCenter или GKTurnBasedEventHandlerDelegate??   -  person Aitul    schedule 30.04.2013


Ответы (4)


Я только что закончил бороться с этим, и примерно через неделю биться головой о стол я обнаружил следующие важные вещи:

(1) Симулятор не получает эти уведомления о поворотах. Как только я сделал эту работу, она отлично работает между двумя устройствами. Симулятор, играющий против устройства, будет отправлять события, но не получать их. Так что, если вы пытаетесь использовать одно устройство и симулятор, чтобы проверить это, удачи. Используйте два устройства.

(2) Убедитесь, что у вас включен «Game Center Enabled for this Version» в iTunes connect, и убедитесь, что CFBundleVersion в вашем приложении соответствует этой версии. Как только я это сделал, все начало работать.

Я предполагаю, что вы уже сделали: [GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate = YOUR_DELEGATE_CLASS;

person Tom Schulz    schedule 30.11.2011
comment
сэкономил мне время. Спасибо - person Peacemoon; 20.02.2014

Том Шульц сказал правду. Но одно! : вы можете получать уведомления с вашего устройства, но не с симулятора. Для этого всегда сбрасывайте содержимое и настройки симулятора перед сборкой и запуском. А на симуляторе можно использовать метод loadmatch, чтобы получить что-то для тестов. Надеюсь, поможет

person Salih Ozdemir    schedule 06.01.2013

Как сказано в документации, это сообщение приходит, когда игрок принимает push-уведомление (обычно путем разблокировки телефона или через центр уведомлений). Отправка push-уведомлений определяется на стороне клиента Game Center и автоматически выполняется GameKit за вас. Вам не нужно реализовывать GKTurnBasedEventHandlerDelegate, чтобы они работали, только для того, чтобы отвечать игроку, принимающему их (путем автоматического возврата к этому матчу или чему-то еще).

Я думаю, стоит дважды проверить настройки уведомлений вашего устройства, чтобы убедиться, что в вашем приложении включены оповещения Центра уведомлений.

person Nortiest    schedule 31.03.2012

Настроили ли вы push-уведомления в iTunes connect / на портале подготовки? На самом деле вам нужен специальный сертификат для включения push.

У меня была та же проблема, что и у вас, пока я не настроил сертификаты.

person Stephen last    schedule 18.11.2011