Skip to content

Commit be1c5f9

Browse files
iOS10以下で画像・動画の保存に失敗する件の修正。
1 parent 363ab10 commit be1c5f9

2 files changed

Lines changed: 9 additions & 26 deletions

File tree

dConnectDevicePlugin/dConnectDeviceHost/dConnectDeviceHost/Classes/profile/DPHostMediaStreamRecording/Recorders/DPHostStreamRecorder.m

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -225,26 +225,18 @@ - (void)saveMovieFileForCompletionHandler:(void (^)(NSURL *assetURL, NSError *er
225225
return;
226226
}
227227
__block NSURL *fileUrl = self.writer.outputURL;
228-
__block NSString *localId = nil;
229-
PHFetchResult *collectonResuts = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil];
230-
__block PHAssetCollection *assetCollection = nil;
231-
[collectonResuts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
232-
assetCollection = obj;
233-
}];
228+
__block PHObjectPlaceholder *placeHolder;
234229
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
235230
PHAssetChangeRequest *assetRequest = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:fileUrl];
236-
PHAssetCollectionChangeRequest *collectonRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];
237-
PHObjectPlaceholder *placeHolder = [assetRequest placeholderForCreatedAsset];
238-
[collectonRequest addAssets:@[placeHolder]];
239-
localId = placeHolder.localIdentifier;
231+
placeHolder = [assetRequest placeholderForCreatedAsset];
240232
} completionHandler:^(BOOL success, NSError *error) {
241233
if (error) {
242234
completionHandler(nil, [DPHostUtils throwsErrorCode:DConnectMessageErrorCodeUnknown message:error.localizedDescription]);
243235
return;
244236
}
245237
NSError *err = nil;
246238
[[NSFileManager defaultManager] removeItemAtURL:fileUrl error:&err];
247-
completionHandler([NSURL URLWithString:localId], err);
239+
completionHandler([NSURL URLWithString:placeHolder.localIdentifier], err);
248240
}];
249241
}];
250242
};

dConnectDevicePlugin/dConnectDeviceHost/dConnectDeviceHost/Classes/profile/DPHostMediaStreamRecording/Recorders/Photo/DPHostCameraRecorder.m

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,9 @@ __block void (^takephotoBlock) (void) = ^(void){
287287
NSData* imageData = UIImageJPEGRepresentation(fixJpeg, 1.0f);
288288
CGImageSourceRef fixSource = CGImageSourceCreateWithData((__bridge CFDataRef) imageData, NULL);
289289
NSString *tmpName = NSProcessInfo.processInfo.globallyUniqueString;
290-
__block NSURL *tmpUrl = [NSURL URLWithString:[NSString stringWithFormat:@"file://%@%@.jpg", NSTemporaryDirectory(), tmpName]];
291-
290+
__block NSURL *tmpUrl = [NSURL URLWithString:[NSString stringWithFormat:@"file://%@%@.jpeg", NSTemporaryDirectory(), tmpName]];
292291
CGImageDestinationRef destination = CGImageDestinationCreateWithURL((__bridge CFURLRef) tmpUrl, kUTTypeJPEG, 1, nil);
292+
293293
CGImageDestinationAddImageFromSource(destination, fixSource, 0, (__bridge CFDictionaryRef) meta);
294294
CGImageDestinationFinalize(destination);
295295
if (source) {
@@ -301,28 +301,19 @@ __block void (^takephotoBlock) (void) = ^(void){
301301
if (destination) {
302302
CFRelease(destination);
303303
}
304-
__block NSString *localId = nil;
305-
PHFetchResult *collectonResuts = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil];
306-
__block PHAssetCollection *assetCollection = nil;
307-
[collectonResuts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
308-
assetCollection = obj;
309-
}];
310-
304+
__block PHObjectPlaceholder *placeHolder;
311305
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
312306
PHAssetChangeRequest *assetRequest = [PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL:tmpUrl];
313-
PHAssetCollectionChangeRequest *collectonRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];
314-
PHObjectPlaceholder *placeHolder = [assetRequest placeholderForCreatedAsset];
315-
[collectonRequest addAssets:@[placeHolder]];
316-
localId = placeHolder.localIdentifier;
307+
placeHolder = [assetRequest placeholderForCreatedAsset];
317308
} completionHandler:^(BOOL success, NSError *error) {
318-
if (error) {
309+
if (!success) {
319310
err = [DPHostUtils throwsErrorCode:DConnectMessageErrorCodeUnknown message:error.localizedDescription];
320311
completionHandler(nil, err);
321312
return;
322313
}
323314
[[NSFileManager defaultManager] removeItemAtURL:tmpUrl error:&err];
324315

325-
completionHandler([NSURL URLWithString:localId], err);
316+
completionHandler([NSURL URLWithString:placeHolder.localIdentifier], err);
326317
}];
327318

328319
}];

0 commit comments

Comments
 (0)