Приложение для камеры — Создайте новый альбом с помощью PHPhotoLibrary с дополнительным уровнем доступа .

#swift #xcode

Вопрос:

У меня есть приложение для камеры, которое делает снимки с помощью камер iPhone и сохраняет их в CameraRoll. Это требует, чтобы я запросил уровень PHPhotoLibrary как .addOnly. Приложение должно сохранять фотографии в определенный альбом — что заставляет меня проверять, существует ли альбом, и создавать его, если нет.

 //Create variable that will store Album name
let albumName = "AppName"
var assetCollection: PHAssetCollection!
 
 //Functions that checks if album with specific name exists and saves it to assetCollection variable

if let assetCollection = fetchAssetCollectionForAlbum() {
    self.assetCollection = assetCollection
    return
}

func fetchAssetCollectionForAlbum() -> PHAssetCollection? {
        let fetchOptions = PHFetchOptions()
        fetchOptions.predicate = NSPredicate(format: "title = %@", albumName)
        let collection = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)

        if let _: AnyObject = collection.firstObject {
            return collection.firstObject
        }
        return nil
    }
 
 //Create album if doesn't exists
func createAlbum() {
        if assetCollection == nil {
        //If assetCollection is empty (album doesn't exist), create one
            PHPhotoLibrary.shared().performChanges({
                PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle: albumName)   // create an asset collection with the album name
            }) { success, error in
                if success {
                    self.assetCollection = self.fetchAssetCollectionForAlbum()
                } else {
                    //With PHAccessLevel as .addOnly error describes that .readWrite access required
                    print("error (String(describing: error))")
                }
            }
        }
    }
 

Проблема в том, что вышеуказанные функции требуют полного доступа пользователей к фотолибрарии. Есть ли способ справиться с созданием альбома, не запрашивая полный уровень .ReadWrite?

Комментарии:

1. Нет, это не так. Как вы уже знаете, в этом и заключается различие между двумя типами авторизации. Это настоящий вопрос?

2. Да, это мой настоящий вопрос :). Вообще никаких проблем с тем, чтобы заставить пользователей предоставить полный доступ к библиотеке, просто я хотел максимально ограничить права доступа.