XCode: поддерживать многопользовательскую игру в фоновом режиме

#ios #xcode #background-process #multiplayer

#iOS #xcode #фоновый процесс #Многопользовательский режим

Вопрос:

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

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

Я знаю, как сохранить пользовательский игровой экземпляр, работающий в фоновом режиме, с помощью UIApplication.shared.beginBackgroundTask, но срок его действия истекает через некоторое время. Как я могу поддерживать подключение пользователя к игре в фоновом режиме на неопределенный срок, пока приложение снова не станет активным или не завершится?

Я использую swift 3, если кому-то интересно.

Комментарии:

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

2. Я использую Firebase. Это не графическая игра, поэтому мне не нужен движок. Все, что мне нужно, это возможность поддерживать взаимодействие с серверной частью, пока приложение работает в фоновом режиме.

3. Вы добавили FIRDatabase.database().persistenceEnabled = true ? в didFinishLauchOptions …….?

4. Нет, сохранение данных не моя проблема. Моя проблема заключается в том, что в фоновом режиме я сохраняю соединение с базой данных в реальном времени, поскольку она обновляется другими пользователями в режиме реального времени, пока приложение либо не завершит работу, либо снова не станет активным. Другими словами, мне нужна фоновая задача, срок действия которой не истекает.

5. попробуйте это blog.newrelic.com/2016/01/13/ios9-background-execution