Ios 进入后台后继续执行NSO操作

Ios 进入后台后继续执行NSO操作,ios,background,nsoperation,Ios,Background,Nsoperation,我需要运行我的长时间运行的任务,直到它完成,无论应用程序是否转到后台。 所以我有了NSOperation的子类,我将这个NSOperation添加到了NSOperationQueue中。在NSO操作的主要功能中,我有: - (void)main { UIApplication *app = [UIApplication sharedApplication]; UIBackgroundTaskIdentifier taskId = 0; taskId = [app be

我需要运行我的长时间运行的任务,直到它完成,无论应用程序是否转到后台。 所以我有了NSOperation的子类,我将这个NSOperation添加到了NSOperationQueue中。在NSO操作的主要功能中,我有:

- (void)main {

    UIApplication *app = [UIApplication sharedApplication];

    UIBackgroundTaskIdentifier taskId = 0;
    taskId = [app beginBackgroundTaskWithExpirationHandler:^(void) {
       [app endBackgroundTask:taskId];
    }];

    NSManagedObjectContext *searchContext = [NSManagedObjectContext createSearchTempContext];

    [searchContext performBlockAndWait:^{

        NSArray *array = //Get Array data from CoreData;

        if (array.count > 0) {

           //Long running task
        }

        if (taskId != UIBackgroundTaskInvalid) [app endBackgroundTask:taskId];
    }];

这就是我需要在后台运行的全部内容吗?或者我错过了什么?

UIBackgroundTaskIdentifier只能给你一些额外的时间来完成任务,它将允许你的应用程序保持最长10分钟的活动状态,然后它将进入挂起状态,对于在后台运行的应用程序来说,只有以下几种可能的方法

播放音频: 接收位置更新: 执行有限长度任务: 处理报摊工具包下载: 提供IP语音VoIP服务:


如果你的应用程序没有使用其中任何一个,那么它将在10分钟后暂停,无论你的所有操作如何

这是否正常工作?有时,它看起来好像NSOperation不工作,没有来自长时间运行部分的日志。你的pList中是否有任何东西指定它能够在后台运行,如GPS/音乐?否,我只设置:后台获取和远程通知在后台模式部分10分钟这是超过必要的,我需要1分钟,最多2分钟。我的代码对这种情况正确吗?好的,那么UIBackgroundTaskIdentifier将为您提供更好的服务,它可以运行程序直到您完成iOS 7,后台时间限制是3分钟,而不是以前版本中的10分钟。