#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. Да, это мой настоящий вопрос :). Вообще никаких проблем с тем, чтобы заставить пользователей предоставить полный доступ к библиотеке, просто я хотел максимально ограничить права доступа.