Платформа XMPP - приложение на основе местоположения, подключенное в фоновом режиме

Я разработал приложение, которое в настоящее время настроено как «На основе местоположения», чтобы оно могло работать в фоновом режиме бесконечно. Это не трюк, мне нужно, чтобы он делал что-то, когда пользователь перемещается. После некоторого поиска я узнал, что это приложение будет выполнять код только в случае изменения местоположения, никакой таймер не сможет выполнить какой-либо код через 10 минут.

Мое приложение, находясь в фоновом режиме, остается подключенным к XMPP в течение 50 минут или около того, а затем отключается. Я бы хотел, чтобы приложение никогда не отключалось, я посмотрел на фреймворк, но не могу найти место, где можно исправить это поведение. Знаете ли вы, возможно ли оставаться на связи «бесконечно»? если да, то какие настройки мне нужно изменить в xmppframework.

Благодарность

[РЕДАКТИРОВАТЬ] Через 50 минут пользователь все еще подключен к XMPP, но он отключен от XMPPRoom, к которому он был подключен. При другом запуске он был подключен в течение 3 часов, время подключения iPhone не похоже.


person subharb    schedule 07.02.2012    source источник
comment
Если он отключен только от XMPPRoom, то это может иметь какое-то отношение к вашим сеансам, поддерживаемым на сервере, которые длятся 50 минут.   -  person tipycalFlow    schedule 07.02.2012
comment
Я настроил свой сервер на: Не отключать клиентов, которые простаивают. Какой параметр вы имеете в виду?   -  person subharb    schedule 07.02.2012
comment
Я имел в виду сеансы для комнат, если они отличаются от сеансов пользователей. Вы упомянули в своем редактировании, что сеанс пользователя сохраняется, но XMPPRooms отключены.   -  person tipycalFlow    schedule 08.02.2012
comment
Я проверил настройки сервера и не вижу ничего, чтобы установить сеансы в XMPPRooms. Также я видел, как телефон может быть подключен к номерам на 3 часа, так что 50 минут - это не что-то исправить.   -  person subharb    schedule 08.02.2012
comment
хм ... вы можете рассмотреть возможность выставить это за награду ... кто-то еще может помочь :)   -  person tipycalFlow    schedule 08.02.2012


Ответы (1)


Чтобы убедиться, что ваше приложение может отправлять и получать сообщения проверки активности, оно должно быть приложением voip и использовать сокет voip. Из Документация Apple:

  1. Добавьте ключ UIBackgroundModes в файл Info.plist вашего приложения. Установите значение этого ключа в массив, который включает значение voip.
  2. Настройте один из сокетов приложения для использования VoIP.
  3. Прежде чем перейти в фоновый режим, вызовите метод setKeepAliveTimeout:handler: для установки обработчика, который будет выполняться периодически. Ваше приложение может использовать этот обработчик для поддержания соединения со службой.

Что касается розетки:

NSInputStream и NSOutputStream: для потоков Cocoa используйте метод setProperty:forKey:, чтобы добавить в поток свойство NSStreamNetworkServiceType. Значение этого свойства должно быть равно NSStreamNetworkServiceTypeVoIP.

person Yonat    schedule 18.02.2012