Как получить уведомления о пошаговых матчах GameKit? - PullRequest
11 голосов
/ 29 октября 2011

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

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

handleTurnEventForMatch

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

- (void)handleTurnEventForMatch:(GKTurnBasedMatch *)match

Параметры

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

Обсуждение

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

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

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

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

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

Ответы [ 4 ]

14 голосов
/ 01 декабря 2011

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

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

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

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

1 голос
/ 06 января 2013

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

0 голосов
/ 01 апреля 2012

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

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

0 голосов
/ 19 ноября 2011

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

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

...