Принудительное закрытие приложения и запуск в фоновом режиме


У нас есть приложение, которое имеет определенную цель, где требуется выход. После выхода процесс должен выполняться в фоновом режиме в течение определенного времени или до завершения. Нам просто нужно знать, как программно заставить приложение войти в фоновый режим, где процессы могут продолжать работать. Любая помощь в этом была бы великолепна! Заранее спасибо!

Обновление: мы подтвердили, что не существует программного способа заставить приложение выйти / войти в фоновый режим и продолжайте выполнять фоновые задачи. Вы можете заставить приложение выйти, используя 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 2

3 ответа:

Вы можете заставить приложение iOS работать в фоновом режиме, отправив зарегистрированный URL-адрес другому приложению для обработки, например URL-адрес веб-сайта в Safari.

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: myWebsiteURL ]];

Многие приложения, которые вызывают Safari для обработки URL-адресов, одобрены Apple.

Чтобы получить любое время в фоновом режиме, приложение должно быть соответствующим образом настроено с использованием одного из разрешенных фоновых режимов (аудио, местоположение или VOIP); или приложение может запросить несколько минут дополнительного времени в фоновом режиме, прежде чем быть приостановлено вызовом метод beginBackgroundTaskWithExpirationhandler

Вы не можете запустить процесс (делать работу) в фоновом режиме в iOS, вы получаете несколько секунд, когда приложение выходит, чтобы сделать любую очистку, и все!

Вы не можете заставить приложение работать в фоновом режиме, я совершенно уверен, что руководство Apple запрещает вам это делать. Что может делать ваше приложение, что оно может делать только в фоновом режиме, а не на переднем плане?