GKSession: не отображается после приостановки приложения - PullRequest
2 голосов
/ 02 сентября 2011

Я работаю некоторое время с GameKit. Почти все работает отлично. У меня есть серьезная проблема с методом session:peer:didChangeState:, который не вызывается после возобновления.

В примере Apple GKRocket сеанс уничтожается, если приложение приостанавливается (willTerminate) и настраивается при его возврате (willResume). Для моего приложения было бы неплохо сохранить сессию.

В журналах я вижу, что session:peer:didChangeState: с состоянием GKPeerStateUnavailable вызывается, когда приложение приостанавливается, но после возобновления вызова с GKPeerStateAvailable не отображается. Сессия доступна. Но даже новые клиенты не могут найти устройство.

Я использую SessionModes Server / Client.

Заранее спасибо за помощь!

1 Ответ

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

Я играл с сессиями некоторое время назад, но есть некоторые предложения ...

- после возобновления, что произойдет, если вы попытаетесь отправить упакованное с устройства, которое спало, на устройство, которое не спало? это проходит?

- вам нужен GKPeerStateUnavailable / available? Из моего опыта все, что вам нужно использовать, это методы applicationDidBecomeActive и applicationWillResignActive: когда вы идете в спящий режим, вы отправляете GAME_PAUSED на другое устройство, а когда проснулись - GAME_UNPAUSED. Если пользователь переводит приложение в спящий режим, а затем закрывает его - ну, не повезло, другой игрок будет сидеть там вечно (так что вы можете дать ему возможность выйти в главное меню). Этот подход работает с яблоком (с точки зрения одобрения) - протестировано на двух приложениях. Привет! * * 1005

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...