#objective-c #ios #sockets
#objective-c #iOS #сокеты
Вопрос:
Допустим, у меня есть клиентское приложение на iOS, которое подключено к серверу с помощью сокета C. Я получаю и отправляю данные по этому сокету.
Теперь пользователь закрывает приложение, делает что-то еще (скажем, проверяет свою почту) и возвращается в приложение.
Мой (набор) вопросов:
что делать с подключением к сокетам? Следует ли вам закрыть его и попытаться повторно открыть сокет при повторном запуске приложения? Или я могу оставить сокет открытым? Если да, то что происходит с данными, полученными при подключении?
Другие ситуации, которые следует учитывать:
- Я не знаю, когда пользователь возвращается в приложение.
- Я не знаю, остается ли пользователь в той же сети.
Спасибо
Ответ №1:
Соединение должно быть закрыто, а полученные данные сохранены [при необходимости], когда приложение собирается «отказаться от активности».
Соединение не сможет выполняться в фоновом режиме. И вы не получите никаких данных в фоновом режиме.
Когда приложение возобновит работу в фоновом режиме, снова откройте соединение и продолжайте.
Эти методы помогут вам отслеживать состояние вашего приложения
– applicationWillResignActive:
– applicationDidEnterBackground:
– applicationWillEnterForeground:
Ответ №2:
Я бы закрыл соединение и открыл новое после того, как приложение сфокусируется. Несколько месяцев назад я написал приложение, в котором приложение связывалось с сервером воспроизведения радиостанции для отображения некоторой информации. — вы не знаете, как долго приложение остается в фоновом режиме — вы не знаете, остается ли пользователь в той же сети — вы не знаете, забыл ли пользователь о все еще работающем в фоновом режиме приложении…
я бы проголосовал за закрытие соединения с сокетами.