4

У меня есть приложение для iPhone, подобное facebook для iPhone. Мое приложение должно подключать мой сервер и читать все сообщения каждые два часа. У меня есть поток для чтения всего сообщения, но когда приложение завершается, поток не может работать. Может ли поток работать независимо от основного делегата или как я могу найти решение этой проблемы?IOS фоновая работа

ответ

6

У вас не может быть приложение в фоновом режиме. Существует API для завершения задач, таких как загрузка фотографии, но даже это будет убито примерно через 10 минут.

Но Apple Push Notification Service представляется наиболее подходящим решением для вашей проблемы. Ваш сервер уведомляет устройство о том, что происходит что-то новое, и вы получаете фактические сообщения, когда пользователь открывает приложение.

Редактировать: Начиная с iOS 7 Apple реализовала функцию, в которой вы можете запланировать выполнение задач для извлечения данных в фоновом режиме. Эти задачи не гарантируются в любое время. См release notes for iOS 7 и связанные методы ниже:

Apps, регулярно обновлять их содержание, связавшись с сервером может регистр с системой и запускается периодически, чтобы получить, что содержание в фоновом режиме. Для регистрации включите ключ UIBackgroundModes с значением выборки в файле Info.plist вашего приложения. Затем, когда запускается ваше приложение, вызовите метод setMinimumBackgroundFetchInterval: , чтобы определить, как часто он получает сообщения об обновлении. Наконец, вы также должны использовать метод application:performFetchWithCompletionHandler: в своем приложении делегат.

+0

Я собирался написать то же самое, но @klaustopher был первым. Вы можете смотреть видео или документацию WWDC, если у вас есть подписка на iOS Developer. Они объясняют это там очень четко. –

+0

Я пробовал NSNotification, но если нет нового сообщения в указанное время, NSNotification не запускается еще раз. Есть ли какой-нибудь образец кода, который вы хотите получить, и можете ли вы поделиться им. – BeyazBaron

+0

Существует множество примеров того, как реализовать услугу push notidication. Если вы также пишете код сервера, просто зайдите в Google для «apple push notification service {your language}». Если у вас нет доступа к серверу, вам нужно создать прокси-сервер, который регулярно запускается на сервере, извлекает информацию с исходного сервера и передает информацию пользователям iPhone. – klaustopher

2

Решение отсутствует.

Apple не позволяет приложениям работать в фоновом режиме, если они не имеют определенного типа, такие как местоположение или аудио или voip или newstand (ваше приложение может продолжать работать в течение примерно 10 минут после его активации, если оно использует shouldBeginBackgroundTaskWithExpirationHandler) ,

Нет обходного пути, многие другие люди задавались вопросом, как сделать то же самое, что и вы сами, но нет законного пути. Ваше приложение не может планировать какую-либо периодическую деятельность домашнего звонка.

Единственный способ, которым может запускаться ваше приложение после его перехода в приостановленное или завершенное состояние, - это запуск пользователем пользователя, явно или в ответ на локальное уведомление или удаленное push-уведомление.

Смежные вопросы