Как приложение iOS может поддерживать соединение TCP на неопределенный срок в фоновом режиме?

Приложение для iPhone, подключающееся к удаленному серверу через TCP. Сценарии использования:

  1. приложение (пользователь) отправляет данные на сервер, а сервер отвечает данными обратно.
  2. сервер может отправлять данные в приложение, когда оно ничего не делает.

Предположим, что если приложение не отправляет данные на сервер в течение 30 минут, сервер закроет соединение. Я хочу поддерживать соединение в течение 120 минут, даже если пользователь ничего не делает.

Случай 1: если приложение находится на переднем плане, я могу использовать таймер для отправки некоторых данных о бездействии на сервер. Нет проблем.

Случай 2 : если пользователь нажал «Домой» и приложение перешло в фоновый режим, что я мог сделать? Я не хочу показывать предупреждение или что-то, что могло бы прервать пользователя (он уехал или играет в игры). Я просто хочу поддерживать соединение в течение более длительного периода, и когда пользователь вернется в приложение, он обнаружил, что соединение будет по-прежнему живым, и был доволен этим.

Я читал документацию о фоновом выполнении, многозадачности и локальных уведомлениях API iphone. Я не уверен, смогу ли я выполнить вариант 2 .

Используйте только легальные API, без взлома.

43
задан yehnan 1 May 2011 в 09:41
поделиться