導(dǎo)入庫Photos
1,首先請求權(quán)限:
-(void)requestAuthorization {
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
//用戶同意則開始創(chuàng)建撼泛。不同意彈出提示
if (status == PHAuthorizationStatusAuthorized) {
[self createFolder];
} else {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"App無法訪問你的媒體資料庫" message:@"app無法正常使用挠说,現(xiàn)在去設(shè)置?" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *actionCancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
}];
[alert addAction:actionCancel];
UIAlertAction *actionOK = [UIAlertAction actionWithTitle:@"設(shè)置" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSURL * url = [NSURL URLWithString: UIApplicationOpenSettingsURLString];
if ( [[UIApplication sharedApplication] canOpenURL: url] ) {
NSURL*url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
}
}];
[alert addAction:actionOK];
dispatch_async(dispatch_get_main_queue(), ^{
[self presentViewController:alert animated:YES completion:nil];
});
}
}];
}
2愿题,創(chuàng)建
由于相冊名字用戶是可以更改的损俭,所以創(chuàng)建成功后應(yīng)將相冊的localIdentifier存儲(chǔ)在本地蛙奖,以便判斷讀取 。
- (void)createFolder {
if(GetAlbumID) {
return;
}
__block NSString *localIdentifier = nil;
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetCollectionChangeRequest *req = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:VideoAlbumName];
localIdentifier = req.placeholderForCreatedAssetCollection.localIdentifier;
} completionHandler:^(BOOL success, NSError * _Nullable error) {
if (success) {
NSLog(@"創(chuàng)建相冊文件夾成功!");
if (localIdentifier) {
[[NSUserDefaults standardUserDefaults] setObject:localIdentifier forKey:@"AlbumID"];
}
} else {
NSLog(@"創(chuàng)建相冊文件夾失敗:%@", error);
}
}];
}
3杆兵,保存
+(void)save:(NSURL *)url finish:(SaveAlbumFinish)saveAlbumFinish {
__block BOOL isHaveAlbum = NO;
//首先獲取相冊的集合
PHFetchResult *collectonResuts = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil];
//對獲取到集合進(jìn)行遍歷
[collectonResuts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
PHAssetCollection *assetCollection = obj;
//根據(jù)GetAlbumID判斷是否是我們要寫入照片的相冊
if ([assetCollection.localIdentifier isEqualToString:GetAlbumID]) {
isHaveAlbum = YES;
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
//請求創(chuàng)建一個(gè)Asset
PHAssetChangeRequest *assetRequest = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:url];
//請求編輯相冊
PHAssetCollectionChangeRequest *collectonRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];
//為Asset創(chuàng)建一個(gè)占位符雁仲,放到相冊編輯請求中
PHObjectPlaceholder *placeHolder = [assetRequest placeholderForCreatedAsset];
//相冊中添加視頻
[collectonRequest addAssets:@[placeHolder]];
} completionHandler:^(BOOL success, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (saveAlbumFinish) {
saveAlbumFinish(success, error);
}
});
}];
}
}];
//沒有讀取到待存儲(chǔ)的相冊
if (!isHaveAlbum) {
if (saveAlbumFinish) {
saveAlbumFinish(NO, [NSError errorWithDomain:@"沒有相冊" code:0 userInfo: nil]);
}
}
}