From 01c116a2fd22c517c6a467179850ad5c46979992 Mon Sep 17 00:00:00 2001 From: yaw Date: Wed, 7 Nov 2018 10:02:24 +0800 Subject: [PATCH] fix ios icloud file download --- package.json | 2 +- .../DMCMediaPicker/DmcPickerViewController.m | 4 +++- .../DMCMediaPicker/PreviewViewController.m | 2 +- src/ios/MediaPicker.m | 21 ++++++++++++++----- www/MediaPicker.js | 3 +++ 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 2af149d..998df4b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-mediapicker-dmcsdk", - "version": "2.3.9", + "version": "2.4.0", "description": "android ios mediaPicker support selection of multiple image and video", "cordova": { "id": "cordova-plugin-mediapicker-dmcsdk", diff --git a/src/ios/DMCMediaPicker/DmcPickerViewController.m b/src/ios/DMCMediaPicker/DmcPickerViewController.m index b754b51..5dc1f3c 100644 --- a/src/ios/DMCMediaPicker/DmcPickerViewController.m +++ b/src/ios/DMCMediaPicker/DmcPickerViewController.m @@ -326,7 +326,9 @@ CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identify forIndexPath:indexPath]; [cell sizeToFit]; PHAsset *asset=fetchResult[indexPath.item]; - [_manager requestImageForAsset:asset targetSize:CGSizeMake(200 , 200) contentMode:PHImageContentModeAspectFill options:nil + PHImageRequestOptions *option = [[PHImageRequestOptions alloc] init]; + option.networkAccessAllowed = YES; + [_manager requestImageForAsset:asset targetSize:CGSizeMake(200 , 200) contentMode:PHImageContentModeAspectFill options:option resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { BOOL downloadFinined = (![[info objectForKey:PHImageCancelledKey] boolValue] && ![info objectForKey:PHImageErrorKey] && ![[info objectForKey:PHImageResultIsDegradedKey] boolValue]); if (downloadFinined && result) { diff --git a/src/ios/DMCMediaPicker/PreviewViewController.m b/src/ios/DMCMediaPicker/PreviewViewController.m index 90aa94b..407a8c8 100644 --- a/src/ios/DMCMediaPicker/PreviewViewController.m +++ b/src/ios/DMCMediaPicker/PreviewViewController.m @@ -142,9 +142,9 @@ PHAsset *asset=_preArray[indexPath.item];//访问已释放的对象 PHImageRequestOptions *option = [[PHImageRequestOptions alloc] init]; option.resizeMode = PHImageRequestOptionsResizeModeFast; + option.networkAccessAllowed = YES; NSString *fileName =[asset valueForKey:@"filename"]; NSString * fileExtension = [fileName pathExtension]; - if([@"GIF" caseInsensitiveCompare:fileExtension]){ cell.gifView.hidden=YES; [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(SCREEN_WIDTH*3 , SCREENH_HEIGHT*3) contentMode:PHImageContentModeAspectFill options:option resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { diff --git a/src/ios/MediaPicker.m b/src/ios/MediaPicker.m index ad28aea..d6f12a7 100644 --- a/src/ios/MediaPicker.m +++ b/src/ios/MediaPicker.m @@ -67,9 +67,14 @@ } -(void)imageToSandbox:(PHAsset *)asset dmcPickerPath:(NSString*)dmcPickerPath aListArray:(NSMutableArray*)aListArray selectArray:(NSMutableArray*)selectArray index:(int)index{ - - - [[PHImageManager defaultManager] requestImageDataForAsset:asset options:nil resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) { + PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init]; + options.networkAccessAllowed = YES; + options.resizeMode = PHImageRequestOptionsResizeModeFast; + options.progressHandler = ^(double progress, NSError *error, BOOL *stop, NSDictionary *info) { + NSString *compressCompletedjs = [NSString stringWithFormat:@"MediaPicker.icloudDownloadEvent(%f,%i)", progress,index]; + [self.commandDelegate evalJs:compressCompletedjs]; + }; + [[PHImageManager defaultManager] requestImageDataForAsset:asset options:options resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) { NSString *filename=[asset valueForKey:@"filename"]; NSString *fullpath=[NSString stringWithFormat:@"%@/%@%@", dmcPickerPath,[[NSProcessInfo processInfo] globallyUniqueString], filename]; NSNumber *size=[NSNumber numberWithLong:imageData.length]; @@ -112,8 +117,14 @@ -(void)videoToSandbox:(PHAsset *)asset dmcPickerPath:(NSString*)dmcPickerPath aListArray:(NSMutableArray*)aListArray selectArray:(NSMutableArray*)selectArray index:(int)index{ - - [[PHImageManager defaultManager] requestAVAssetForVideo:asset options:nil resultHandler:^(AVAsset *avsset, AVAudioMix *audioMix, NSDictionary *info) { + PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init]; + options.networkAccessAllowed = YES; + options.resizeMode = PHImageRequestOptionsResizeModeFast; + options.progressHandler = ^(double progress, NSError *error, BOOL *stop, NSDictionary *info) { + NSString *compressCompletedjs = [NSString stringWithFormat:@"MediaPicker.icloudDownloadEvent(%f,%i)", progress,index]; + [self.commandDelegate evalJs:compressCompletedjs]; + }; + [[PHImageManager defaultManager] requestAVAssetForVideo:asset options:options resultHandler:^(AVAsset *avsset, AVAudioMix *audioMix, NSDictionary *info) { if ([avsset isKindOfClass:[AVURLAsset class]]) { NSString *filename = [asset valueForKey:@"filename"]; AVURLAsset* urlAsset = (AVURLAsset*)avsset; diff --git a/www/MediaPicker.js b/www/MediaPicker.js index 2a44161..c9becfe 100644 --- a/www/MediaPicker.js +++ b/www/MediaPicker.js @@ -17,6 +17,9 @@ var MediaPicker = { compressEvent:function(s,i) { cordova.fireDocumentEvent('MediaPicker.CompressVideoEvent', {'status':s,'index':i}); }, + icloudDownloadEvent:function(p,i) { + cordova.fireDocumentEvent('MediaPicker.icloudDownloadEvent', {'progress':p,'index':i}); + }, compressImage:function(arg0, success, error) { exec(success, error, "MediaPicker", "compressImage", [arg0]); },