Как правильно использовать сокеты в iOS для различных состояний приложения? - PullRequest
2 голосов
/ 03 ноября 2011

Допустим, у меня есть клиентское приложение на iOS, которое подключено к серверу с помощью сокета C. Я получаю и отправляю данные по этому сокету.

Теперь пользователь закрывает приложение, поэтому что-то еще (скажем, проверит его почту) и возвращается в приложение.

Мой (связка) вопрос (ы):
Что делать с розеткой? Стоит ли закрыть его и попытаться снова открыть сокет при перезапуске приложения? Или я могу оставить розетку открытой? Если так, что происходит с данными, полученными по соединению?

Другие ситуации для рассмотрения:

  • Я не знаю, когда пользователь вернется в приложение.
  • Я не знаю, находится ли пользователь в той же сети.

Спасибо

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

Соединение должно быть закрыто, а полученные данные сохранены [при необходимости], когда приложение собирается «подать в отставку».

Соединение не сможет работать в фоновом режиме.И вы не получите никаких данных в фоновом режиме.

Когда приложение возобновит работу в фоновом режиме, снова откройте соединение и продолжите работу.

Эти методы помогут вам отслеживать состояние вашего приложения

– applicationWillResignActive:
– applicationDidEnterBackground:
– applicationWillEnterForeground:
1 голос
/ 07 ноября 2011

Я бы закрыл соединение и открыл новое после того, как приложение сфокусировалось. Несколько месяцев назад я написал приложение, в котором приложение общалось с сервером воспроизведения радиостанции для отображения некоторой информации. - вы не знаете, как долго приложение остается в фоновом режиме - вы не знаете, находится ли пользователь в одной сети - вы не знаете, забыл ли пользователь о приложении в фоновом режиме ...

Я бы проголосовал за закрытие сокета.

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