iphone - подключение к серверу в фоновом режиме - PullRequest
8 голосов
/ 04 января 2011

Я создаю приложение, которое подключается к серверу и отправляет текст.Если сеть (как Wi-Fi или 3G) есть, он немедленно отправит текст на сервер.Но если нет сети, он продолжает опросить соединение с сервером каждые 5 минут.Вся эта часть работает нормально.

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

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

Ответы [ 4 ]

14 голосов
/ 04 января 2011

Я предлагаю вам внимательно прочитать эту статью от Apple, особенно Завершение задачи конечной длины в разделе в фоновом режиме.

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html

Что уточнить:

  • Как только ваше приложение работает в фоновом режиме и зависает операционной системой, ваше приложение само по себе не сможет проснуться и снова подключиться к Интернету. .
  • Однако, согласно вышеприведенной статье Apple, вы можете вызвать этот beginBackgroundTaskWithExpirationHandler метод делегата вашего приложения, чтобы подать заявку на дополнительное время, когда оно находится в фоновом режиме, то есть ваше приложение не может проснуться Самостоятельно, когда в фоновом режиме, он может, когда в фоновом режиме и не заморожен, попытаться подать заявку на дополнительное время, чтобы закончить свою долгую задачу.

Надеюсь, это поможет.

2 голосов
/ 06 февраля 2015

До сих пор вы можете делать это на iOS7 с Background Fetch . Взгляните на эту статью .

Однако у вас есть только до 30 с , чтобы выполнить задачу. Согласно статье выше, есть и другое решение под названием Служба фоновой передачи .

Если требуется больше времени, тогда служба фоновой передачи API можно использовать

2 голосов
/ 29 января 2013

Есть хитрость, которую, я думаю, использует flayvr.

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

Они используют значительные изменения местоположения,где, когда кто-то проходит какое-то значительное расстояние (примерно 500 м), каждое приложение, зарегистрированное для значительного изменения местоположения, будет пробуждено в течение ограниченного периода времени для выполнения какой-либо быстрой задачи и будет закрыто через несколько секунд.

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

Надеюсь, это поможет.

1 голос
/ 04 января 2011

Создайте новый проект в XCode, и вы увидите, что в файле делегата приложения автоматически генерируется множество новых методов. как applicationDidEnterBackground, applicationWillEnterForeground и т. д.

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

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