0

Im Singleton verantwortlich für Netzwerk, erstelle ich eine Instanz von Antriebsservice:Weiter Upload mit GTLServiceTicket im Hintergrund

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

Irgendwann habe ich ein Ticket erstellen die angegebene Datei zu laden:

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); 
    } 
}]; 

Das ganze Problem ist, dass, wenn ich Daten unter Verwendung GTMHTTPFetcher herunterladen, die Arbeit im Hintergrund fortgesetzt wird. Beim Hochladen mit GTLServiceTicket wird es angehalten, während sich die App im Hintergrund befindet. Ich kann keine Eigenschaft finden, die es im Hintergrund woking macht. Fehle ich etwas? Wie es geht?

Antwort

0

Ich habe keine passende Lösung mit GTLServiceTicket gefunden, so dass ich mit benutzerdefinierten Wrapper fertig ist, die UIApplicationDidEnterBackgroundNotification hört und beginBackgroundTaskWithName:expirationHandler: verwenden.