在后台使用 GTLServiceTicket 继续上传

Continue upload with GTLServiceTicket in the background

在负责网络的单例中,我创建了一个驱动服务的实例:

self.service = [[GTLServiceDrive alloc] init];
[self.service setShouldFetchInBackground:YES];

有时我会创建一张票来上传给定的文件:

GTLUploadParameters *uploadParameters = [GTLUploadParameters uploadParametersWithFileHandle:fileHandle MIMEType:kGDriveMimeType];
GTLDriveFile *newFile = [GTLDriveFile object];
newFile.title = @"123";

// keep the file inside event folder
GTLDriveParentReference *parentFolder = [GTLDriveParentReference object];
parentFolder.identifier = parentFolderId;
newFile.parents = @[parentFolder];

GTLQueryDrive *uploadQuery = [GTLQueryDrive queryForFilesInsertWithObject:newFile uploadParameters:uploadParameters];

GTLServiceTicket *serviceTicket = [self.service executeQuery:uploadQuery completionHandler:^(GTLServiceTicket *ticket, GTLDriveFile *uploadedFile, NSError *uploadError) {
    if (completionHandler) {
        completionHandler(uploadedFile, uploadError);
    }
}];

[serviceTicket setUploadProgressBlock:^(GTLServiceTicket *ticket, unsigned long long numberOfBytesRead, unsigned long long dataLength) {
    CGFloat progress = (CGFloat)numberOfBytesRead / (CGFloat)dataLength;
    if (progressHandler) {
        progressHandler(progress);
    }
}];

整个问题是,当我使用 GTMHTTPFetcher 下载数据时,后台工作仍在继续。使用 GTLServiceTicket 上传时,它会在应用程序处于后台时暂停。我找不到任何 属性 让它在后台唤醒。我错过了什么吗?怎么做?

我没有找到任何合适的 GTLServiceTicket 解决方案,所以我完成了自定义包装器,它正在监听 UIApplicationDidEnterBackgroundNotification 并使用 beginBackgroundTaskWithName:expirationHandler:.