【发布时间】:2023-04-08 08:00:01
【问题描述】:
我的照片应用在 iOS 14 中的新隐私照片功能存在严重问题,我尝试让它与 .limited 访问权限一起使用。因为信息很少,我希望有人能指出我正确的方向。
首先,我使用自己的 ImagePicker,因为我需要根据不同的标准过滤 PHAssset。然后我将资产传递给我的 ImagePicker,它只列出这些。其次,它显示了一个动作按钮来启动相机拍摄一张新照片。我觉得新的 PHPickerViewController 还没有这些功能?!
所以这一切都与 .limited 访问状态有关 - 使用 .authorized 访问一切正常! 我成功地从选择器收到了一张新拍摄的照片。但它无法将其保存到我自己创建的相册中。首先我通过
创建相册let createAlbumRequest = PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle: AlbumName)
这是成功的。接下来我准备通过获取这张专辑的PHAssetCollection对象来添加图片
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", AlbumName)
let collection = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)
接下来我会尝试通过
将图像保存到此集合中PHPhotoLibrary.shared().performChanges({
let assetChangeRequest = PHAssetChangeRequest.creationRequestForAsset(from: uiImage)
let assetPlaceHolder = assetChangeRequest.placeholderForCreatedAsset
let albumChangeRequest = PHAssetCollectionChangeRequest(for: collection)
...
这不起作用,因为之前的集合对象为零。所以我无法收到我刚刚创建的收藏。
我不知道允许打开相机,创建相册但无法在里面存储东西有什么意义?!所以我相信我没有得到这个新概念:)
顺便说一句,我读到了一个弹出窗口,如果应用程序尝试添加到集合中,应该会出现,我认为在我的情况下应该会弹出,但我从未见过这样的弹出窗口。从集合中删除时我知道这些。
任何帮助表示赞赏! 谢谢
【问题讨论】:
-
如果您创建了相册,则不需要按标题要求。这总是一种不正确的访问方式。
-
你是对的。但是在调试时,我已经尝试将 createAlbumRequest.placeholderForCreatedAssetCollection 的 localIdentifier 传递给 fetchAssetCollections(withLocalIdentifiers:options:)。 fetchResult 仍然是 nil。
-
然后向 Apple 提交错误,因为他们声称通过有限的授权,您可以访问自己创建的相册。