Принудительное закрытие приложения и запуск в фоновом режиме
У нас есть приложение, которое имеет определенную цель, где требуется выход. После выхода процесс должен выполняться в фоновом режиме в течение определенного времени или до завершения. Нам просто нужно знать, как программно заставить приложение войти в фоновый режим, где процессы могут продолжать работать. Любая помощь в этом была бы великолепна! Заранее спасибо!
Обновление: мы подтвердили, что не существует программного способа заставить приложение выйти / войти в фоновый режим и продолжайте выполнять фоновые задачи. Вы можете заставить приложение выйти, используя exit (0); но это убивает приложение все вместе. Однако основная часть этого вопроса касалась выполнения задач в фоновом режиме. Мы нашли решение, которое позволяет нашему приложению начать обработку данных и обработку задач, которые пользователь настроил для обработки. Вот необходимый код. Это должно быть добавлено в делегат приложения, и многозадачность требуется на устройстве / IOS.
- (void)applicationDidEnterBackground:(UIApplication *)app{
// Check that IOS supports multitasking
if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]){
// Check that the device supports multitasking
if ([[UIDevice currentDevice] isMultitaskingSupported]) {
// Custom setting to allow users the freedom to enable or disable background tasks
BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:@"backgroundTasksEnabled_key"];
if ( enabled ){
//Get the shared application instance
backGroundApp = [UIApplication sharedApplication];
background_task = [backGroundApp beginBackgroundTaskWithExpirationHandler: ^ {
[backGroundApp endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
}];
// Run in background
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"nnProcess background tasks!nn");
// Do your work here
});
}
}
}
}
3 ответа:
Вы можете заставить приложение iOS работать в фоновом режиме, отправив зарегистрированный URL-адрес другому приложению для обработки, например URL-адрес веб-сайта в Safari.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: myWebsiteURL ]];
Многие приложения, которые вызывают Safari для обработки URL-адресов, одобрены Apple.
Чтобы получить любое время в фоновом режиме, приложение должно быть соответствующим образом настроено с использованием одного из разрешенных фоновых режимов (аудио, местоположение или VOIP); или приложение может запросить несколько минут дополнительного времени в фоновом режиме, прежде чем быть приостановлено вызовом метод beginBackgroundTaskWithExpirationhandler