Программное добавление ресурсов в общий фотоальбом iCloud

Существуют ли какие-либо ограничения на использование PhotoKit для добавления фотографий в общие фотоальбомы iCloud? Хотя я могу добавлять новые фотографии в AssetCollections, которые являются обычными альбомами, это вообще не работает, если AssetCollection представляет собой общий альбом iCloud. Нужно ли мне также добавить другой тип PHAsset?

Если я изменю вызов fetchAssetCollections на использование .albumRegular вместо .albumCloudShared, приведенный ниже код будет работать. В противном случае я получаю сообщение об ошибке:

The operation couldn't be completed. (PHPhotosErrorDomain error -1.)

let sharedAlbums = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .albumCloudShared, options: nil)

let target = sharedAlbums.firstObject

PHPhotoLibrary.shared().performChanges({
    let assetChangeRequest = PHAssetChangeRequest.creationRequestForAsset(from: wantedimage)
    let assetPlaceHolder = assetChangeRequest.placeholderForCreatedAsset
    let albumChangeRequestShared = PHAssetCollectionChangeRequest(for: target!)
    let enumeration: NSArray = [assetPlaceHolder!]
    albumChangeRequestShared!.addAssets(enumeration)
}, completionHandler: { result, error in 
    print(result)
    print(error)
    print(error?.localizedDescription)
})



person hirenj    schedule 27.11.2019    source источник


Ответы (1)


Да, вы не можете добавлять изображения в общий альбом iCloud.

Перед выполнением запроса на изменение вы должны вызвать canPerform(_:) в PHAssetCollection.

Если вы вызовете canPerform(_:) на PHAssetCollectionSubtype из albumCloudShared, он вернет false.

Например:

    print(collection.canPerform(.createContent)) //false
     
    print(collection.canPerform(.addContent)) //false 

У меня была такая же проблема, и я отправил запрос функции через приложение Feedback.

person Andrew Roach    schedule 20.07.2020
comment
Вы когда-нибудь получали ответ на свой запрос функции? - person Barjavel; 14.03.2021
comment
К сожалению, ответа я так и не получил. - person Andrew Roach; 16.03.2021