Принудительно закрыть приложение и запустить его в фоновом режиме
У нас есть приложение, которое имеет определенную цель, где требуется выход. После выхода процесс должен запускаться в фоновом режиме в течение определенного периода времени или до его завершения. Нам просто нужно знать, как программно заставить приложение перейти в фоновый режим, где процессы могут продолжаться. Любая помощь в этом была бы отличной! Заранее спасибо!
ОБНОВЛЕНИЕ: Мы подтвердили, что не существует программного способа заставить приложение выйти / войти в фоновый режим и продолжить выполнение фоновых задач. Вы можете принудительно закрыть приложение, используя 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(@"\n\nProcess background tasks!\n\n");
// Do your work here
});
}
}
}
}
3 ответа
Вы можете перевести приложение iOS в фоновый режим, отправив зарегистрированный URL-адрес другому приложению, например URL-адресу веб-сайта, в Safari.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: myWebsiteURL ]];
Многие приложения, которые вызывают Safari для обработки URL-адресов, одобрены Apple.
Чтобы получить какое-либо время в фоновом режиме, приложение должно быть соответствующим образом настроено с использованием одного из разрешенных фоновых режимов (аудио, местоположение или VOIP); или приложение может запросить несколько минут дополнительного времени в фоновом режиме, а затем приостановить, вызвав метод beginBackgroundTaskWithExpirationHandler.
У вас не может быть процесса, выполняющего (выполняющего работу) в фоновом режиме в iOS, у вас есть несколько секунд, когда приложение завершает какую-либо очистку, и все!
Вы не можете заставить приложение в фоновом режиме, я уверен, что руководящие принципы Apple запрещают вам делать это. Что может делать ваше приложение, которое оно может делать только в фоновом режиме, а не на переднем плане?