Как правильно использовать сокеты в iOS для разных состояний приложения?

#objective-c #ios #sockets

#objective-c #iOS #сокеты

Вопрос:

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

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

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

Другие ситуации, которые следует учитывать:

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

Спасибо

Ответ №1:

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

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

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

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

 – applicationWillResignActive:
– applicationDidEnterBackground:
– applicationWillEnterForeground:
  

Ответ №2:

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

я бы проголосовал за закрытие соединения с сокетами.