2016-10-03 63 views
2

如何在后台模式下从照片库中继续选择视频?UIImagePickerController - 从照片库中选择背景中的视频

我的意思是,当我从imagePickerController - PhotoLibrary和视频按use按钮开始得到压缩 - 在这个压缩过程(附上截图)如果我按home button(i.e. go to background)再来找​​后来我info[UIImagePickerControllerMediaURL]null,所以是有可能该应用程序可以继续在后台压缩视频,并在返回​​时返回正确的url

截图:

enter image description here

didFinishPickingMediaWithInfo

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{ 


NSURL *url = info[UIImagePickerControllerMediaURL]; 

NSLog(@"url : %@",url); 

[picker dismissViewControllerAnimated:YES completion:nil]; 

} 

PS:如果我们camera录制视频并转到后台,然后它会停止记录那里,我们可以来后再使用前景。

我想到了一种解决方法 - UIBackgroundTaskIdentifier,但它不会在任何情况下工作,如果视频很大,那么它有时间限制,所以寻找任何其他解决方案!

任何帮助将不胜感激! :)

回答

1

,如果我们想在video is compressing and user press home button(app go in background)通过UIImagePickerControllerphotolibraryvideo不断在后台,然后我们必须使用UIBackgroundTaskIdentifier用于继续在后台或保存在应用程序后台运行任何其他背景的方式执行(不太可能的事情!)。现在,UIBackgroundTaskIdentifier有时间限制,所以我们不能选择视频的任意大小,所以如果我们限制的视频持续时间那么我们可以继续选择它的背景是什么样,

UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
picker.delegate = self; 
picker.allowsEditing = YES; 
picker.videoMaximumDuration = 60.0; 

self.backgroundTask = UIBackgroundTaskInvalid; 

      self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 
       NSLog(@"Background handler called. Not running background tasks anymore."); 
       [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask]; 
       self.backgroundTask = UIBackgroundTaskInvalid; 
      }]; 

[self presentViewController:picker animated:YES completion:NULL]; 

随着UIImagePickerController我们可以做这么多只在后台选择视频。如果有人想在后台选择大视频,那么他/她应该看看ALAssetLibraryPhotos framework

相关问题