2013-11-20 5 views
3

Я пишу приложение iOS, которое использует API-интерфейс Dropbox Datastore для синхронизации данных на нескольких устройствах.Запуск фоновой задачи при запуске

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

У меня возникли проблемы с поиском окончательного способа, чтобы приложение выполняло то же самое на iOS.

Итак, есть ли какие-либо рекомендации:

  • Выполнить простую фоновую службу эффективно и надежно на прошивкой.
  • Есть начало службы при загрузке

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

+0

невозможно без побега из тюрьмы. Кроме того, Facebook/Gmail используют push-уведомление, а не фоновый процесс –

ответ

7

Простой простой сервисный сервис эффективно и надежно работает на iOS.

Вы не можете выполнять фоновые службы на iOS. Вы можете выполнить некоторые операции в фоновом режиме, но ОС оставляет за собой право убить ваше приложение в любое время.

Есть начало службы при загрузке

невыполнима. Сторонние приложения не могут запускаться автоматически при загрузке в iOS.

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

Учитывая то, что указано выше, я определенно могу сказать вам, что они этого не делают. Это может показаться, но они технически не могут это сделать.

Один из вариантов, который у вас есть на iOS 7, заключается в том, чтобы ваше приложение обновляло данные в фоновом режиме, когда получено специальное уведомление о толчке, как обсуждалось here. Короче говоря, вы можете отправить push-уведомление, которое инициирует обновление данных, и это, вероятно, то, что делают Facebook и GMail, чтобы создать впечатление, что контент постоянно обновляется в фоновом режиме.

1

Когда ваше приложение запущено, оно может начать обновление/синхронизацию данных Dropbox в фоновом режиме.

Невозможно иметь службу, которая запускается при загрузке устройства. Приложение Facebook и приложение Gmail не имеют службы/процесса, который запускается при загрузке устройства.

1

Просто чтобы быть полным:

Есть несколько режимов фона IOS (UIBackgroundModes) вы можете установить в течение application.

Существует тот, который позволяет запускать приложение при запуске (если ваше приложение запускалось при завершении работы), а также для автоматического перезапуска при его сбое (он всегда перезапускается в фоновом режиме). Это тип фонового приложения «Voip».

Скорее всего, вам не очень полезно, хотя яблоко очень строго говорит о том, что такое приложение «voip», и нет.

+0

Я уверен, что преимущества режима «voip-приложения» необходимы среди других приложений, отличных от voip, - каковы критерии Apple для его разрешения? У моего приложения есть напоминания, которые нужно запускать, когда пользователь устанавливает их - в идеале, даже если устройство перезапускается. Эти напоминания хранятся в Dropbox Datastores и доступны локально - я не думаю, что для такой простой функции необходимы уведомления PUSH. Android не мог сделать это проще. Я нахожу довольно удивительным, что Apple не делает такую ​​простую, но важную функцию более широко доступной. –

+1

В принципе, вам нужно быть полнофункциональным программным телефоном, который будет передан в качестве приложения voip. Вопрос в основном спросил, может ли приложение запускаться при запуске, да, но только для приложений voip. Я думаю, что Apple приходит с точки зрения того, что фоновые приложения используют слишком много батареи, чтобы правильно или неправильно ограничивать то, что приложение может/не может сделать в фоновом режиме. –

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