在后台使用 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:
.
在负责网络的单例中,我创建了一个驱动服务的实例:
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:
.