Сохранение приложения в фоновом режиме неограниченное (для приложения Cydia)

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

Очевидно, это не для магазина приложений, поэтому, пожалуйста, не читайте лекции 🙂

Итак, как вы работаете в фоновом режиме без каких-либо ограничений, таких как «backgrounder»? Мне не удалось найти ответ, кроме некоторых людей, которые были в разных направлениях, но, возможно, с тех пор кому-то удалось его выкопать.

В зависимости от того, что будет делать ваше приложение, вы можете подключить MobileSubstrate. Это будет загружено SpringBoard и, по сути, будет работать «в фоновом режиме».

Если вы хотите написать фактическое приложение, вы также можете написать «Динамическую библиотеку», которая будет загружена SpringBoard MobileSUbstrate. Вы можете говорить между этим dylib и вашим приложением, используя NSNotificationCenter ; создание и публикация уведомлений.

Обновить:

Это решение больше не кажется достаточным (~ iOS 7+ или 7.1+). Я оставляю исходный ответ для исторической справки, и в случае, если это поможет создать будущее решение, основанное на этом устаревшем:


Это зависит от того, что вы подразумеваете под приложением . Если вы говорите о неграфическом фоновом сервисе , то то, что вы хотите, – это демон запуска. См. Здесь, как создать демон запуска .

Если у вас есть обычное приложение пользовательского интерфейса, но когда пользователь нажимает кнопку «домой», вы хотите, чтобы он не спал в фоновом режиме в течение неограниченного времени, тогда вы можете использовать некоторые недокументированные фоновые режимы в файле Info.plist вашего приложения :

 <key>UIBackgroundModes</key> <array> <string>continuous</string> <string>unboundedTaskCompletion</string> </array> 

Затем, когда iOS готова разместить ваше приложение в фоновом режиме (например, пользователь нажимает кнопку «домой»), вы можете сделать это в своем делете приложения:

 @property (nonatomic, assign) UIBackgroundTaskIdentifier bgTask; - (void)applicationDidEnterBackground:(UIApplication *)application { // Delay execution of my block for 15 minutes. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 15 * 60 * NSEC_PER_SEC), dispatch_get_current_queue(), ^{ NSLog(@"I'm still alive!"); }); self.bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ // should never get here under normal circumstances [application endBackgroundTask: self.bgTask]; self.bgTask = UIBackgroundTaskInvalid; NSLog(@"I'm going away now ...."); }]; } 

Обычно iOS дает вам до 10 минут, чтобы приложение UI работало в фоновом режиме. В режиме недокументированного фона вы сможете продолжать жить за 10 минут.

Примечание. Это не требует подключения к MobileSubstrate. Если вы используете второй метод (недокументированные фоновые режимы), то он требует установки вашего приложения в /Applications/ , а не в обычной области песочницы ( /var/mobile/Applications/ ).

  • Расписание нескольких, ежедневных событий с помощью NSTimer?
  • Как использовать значение в PSLinkListCell в наборе предпочтений?
  • Преобразование проекта xcode в iOSOpenDev
  • Как я могу отслеживать вызовы API приложения на jailbroken iOS-устройстве?
  • Могут ли приложения Cydia использовать параметр UIFileSharingEnabled?
  • как защитить приложение iOS от взлома?
  • Идентификатор, используемый для подписи исполняемого файла, более недействителен <= help me
  • Как использовать функцию% group в Theos / Logos?
  • Как правильно использовать SharedInstance в Cydia Tweak?
  • Как установить / активный syslogd на iPhone / iPad
  • Как отображать значок пакета / приложения при просмотре Cydia repo
  • Interesting Posts

    Проблемы с мультимедийными запросами CSS с устройствами iOS

    Как настроить поиск SearchBar UISearchController на представление, которое не является таблицейHeaderView или navigationItem.titleview?

    Каков правильный способ использования NSCache с dispatch_async в многоразовой ячейке таблицы?

    ios Handoff отсутствует NSUserActivity в launchOptions?

    iPhone GPS в фоновом режиме никогда не возобновляется после паузы

    performSegueWithIdentifier vs instantiateViewControllerWithIdentifier

    Вставить пустое значение в подборщик даты в Iphone

    Отладка приложения iPhone из журнала сбоев устройств

    Можете ли вы установить вставки прокрутки для контейнерных контроллеров?

    как передавать изображения из одного вида в другое

    Проблема вращения столбца статуса iOS iOS

    Распространение внутреннего приложения iOS, разработанного в рамках iOS Developer Enterprise Program

    cancelLocalNotification не работает

    Получите количество строк из базы данных sqlite в iPhone ios

    Граница раздела UITableView

    Давайте будем гением компьютера.