写真アプリは、バックグラウンドで CameraRoll からすべてをアップロードする方法を教えてください。
日付範囲に基づいて、バックグラウンドで数百枚の写真をアップロードする必要があります。私のアプリは現在NSURLSession
、次のコードを使用しています(私は思う...)しかし、これが機能するには、タスクスケジューラがJPGをアプリストレージのファイルにコピーする必要があります(iOS8でNSUrlSessionを使用したストリームリクエストによるバックグラウンドアップロードを参照) 。アプリはバックグラウンドになります。数百枚の写真の場合、これには時間とストレージがかかりすぎます。
「ストリーム」アプローチを使用する方法、またはNSURLSession
バックグラウンドから追加のタスクを確実にスケジュールする方法はありますか? 私の開発者によると、iCloud にある可能性のある CameraRoll の写真が原因で、バックグラウンド スケジューリングが失敗する可能性があります。
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
didSendBodyData:(int64_t)bytesSent
totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend {
NSString *identifier = task.originalRequest.allHTTPHeaderFields[@"X-Image-Identifier"];
NSDictionary *d = [self sessionInfosDictionary];
NSURLSessionTaskInfo *info = d[identifier];
double p = (double)totalBytesSent/(double)totalBytesExpectedToSend;
info.progress = p;
[self saveSessionInfos:d];
for (id<PhotosUploaderDelegate>delegate in _delegates) {
if ([delegate respondsToSelector:@selector(photoUploader:didUploadDataForAssetWithIdentifier:totalBytesSent:totalBytesExpectedToSend:)]) {
[delegate photoUploader:self didUploadDataForAssetWithIdentifier:identifier totalBytesSent:totalBytesSent totalBytesExpectedToSend:totalBytesExpectedToSend];
}
}
}