[iOS] Сохранять network connection пока экран спит
От: Varavva  
Дата: 19.07.16 11:00
Оценка:
Получаю от сервера сообщения и заполняю по ним таблицу в iOS приложении

Когда экран засыпает или приложение неактивно, то сообщения не приходят. Как сделать, чтоб приходили?

Сообщения получаю через CFStreamCreatePairWithSocketToHost
Re: [iOS] Сохранять network connection пока экран спит
От: Dair Россия  
Дата: 19.07.16 11:54
Оценка:
Здравствуйте, Varavva, Вы писали:

V>Когда экран засыпает или приложение неактивно, то сообщения не приходят. Как сделать, чтоб приходили?

Вообще это Background Execution. Т.е., регистрируешь таск, который будет фоном опрашивать сервер периодически.
Твой случай, как я понимаю, "Background fetch".

V>Сообщения получаю через CFStreamCreatePairWithSocketToHost

То есть, у тебя открыт сокет и ты из него читаешь? В общем случае плохая идея, тем более на iOS, который то в WiFi, то в 3G, а то без ничего.
Я бы делал периодическим поллингом — открыл сокет, спросил у ясеня сервера, получил ответ/обработал ошибку, закрыл сокет.
Re: [iOS] Сохранять network connection пока экран спит
От: Johnsson  
Дата: 19.07.16 12:07
Оценка: +1
Здравствуйте, Varavva, Вы писали:

V>Получаю от сервера сообщения и заполняю по ним таблицу в iOS приложении


V>Когда экран засыпает или приложение неактивно, то сообщения не приходят. Как сделать, чтоб приходили?


V>Сообщения получаю через CFStreamCreatePairWithSocketToHost


Если не хочется менять архитектуру на push Нотификации, Можно исхитриться и притвориться аудиплеером, тогда система не усыпит процесс. Есть еще несколько классов приложений которые могут работать в бэкграунде вроде voip или навигации (указывается в plist приложения). Но так как apple бережет батарею чтоб можно было похвалиться тем, что айфоны работают долго, они не примут такое приложение, если оно действительно не воспроизводит музыку, или не соответствует другим классам разрешенных background apps.
Для AdHoc приложений решение подходит.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.