Iphone 强制应用程序关闭并在后台运行

Iphone 强制应用程序关闭并在后台运行,iphone,multithreading,multitasking,Iphone,Multithreading,Multitasking,我们有一个应用程序,有一个特定的目的,需要退出。退出后,流程需要在后台运行一段时间或直到完成。我们只需要知道如何通过编程强制应用程序进入后台,以便进程可以继续运行。这方面的任何帮助都会很好!提前谢谢 更新:我们已经确认,似乎没有一种编程方式可以强制应用程序退出/进入后台并继续运行后台任务。您可以使用exit(0)强制应用程序退出;但这会让应用程序一败涂地。然而,这个问题主要是关于在后台运行任务。我们已经找到了一个解决方案,允许我们的应用程序开始处理数据和处理用户设置要处理的任务。这是所需的代码。

我们有一个应用程序,有一个特定的目的,需要退出。退出后,流程需要在后台运行一段时间或直到完成。我们只需要知道如何通过编程强制应用程序进入后台,以便进程可以继续运行。这方面的任何帮助都会很好!提前谢谢

更新:我们已经确认,似乎没有一种编程方式可以强制应用程序退出/进入后台并继续运行后台任务。您可以使用exit(0)强制应用程序退出;但这会让应用程序一败涂地。然而,这个问题主要是关于在后台运行任务。我们已经找到了一个解决方案,允许我们的应用程序开始处理数据和处理用户设置要处理的任务。这是所需的代码。这需要添加到app delegate,并且需要在设备/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

                });
            }
        }
    }
}

在iOS中,你不能让进程在后台运行(做工作),当应用程序退出进行任何清理时,你会有几秒钟的时间,仅此而已

你不能强迫一个应用程序进入后台,我相当肯定苹果的指导方针禁止你这样做。您的应用程序可能在后台执行哪些操作而不能在前台执行?

您可以通过将注册的URL发送到另一个要处理的应用程序(如Safari的网站URL)来强制iOS应用程序进入后台

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: myWebsiteURL ]];
许多调用Safari来处理URL的应用程序都得到了苹果的批准


要在后台获得任何时间,必须使用允许的后台模式之一(音频、位置或VOIP)对应用程序进行适当配置;或者,该应用程序可以通过调用beginBackgroundTaskWithExpirationHandler方法,在挂起之前在后台请求几分钟的额外时间。这并不是说它不能在前台执行流程,而是需要后台,我们希望用户有能力做他们必须做的事情,而应用程序将在他们继续工作或玩耍时处理其余的事情。只需快速进出,无需等待流程完成。我们已经看到很多人说关闭应用程序或强行进入后台不是一个好主意。目前,我让应用程序运行一个进程,在所有操作完成后获得确认,然后自动关闭。但是,如果按下home(主页)按钮,该过程将暂停。TXAn应用程序不应强制关闭自身。响应用户关闭应用程序,不要让它自己发生。再看一看苹果的多任务指南,如果需要的话,你应该能够指定一个后台处理。那么,你认为我发布的上述代码是一个合适的解决方案,可以处理2-3分钟的后台处理吗?据我所知,这是苹果公司批准的方法,但也许你可以证实?非常感谢。想知道Qubii是如何工作的,它似乎可以在后台启动并在查寻时备份手机。对于那些搜索解决方案的人,谁可以使用私有API。