ios - iOS/macOS云共享相册中如何给照片附加短数据?

标签 ios swift metadata photo shared

我正在构建一个应用程序,通过照片应用程序的云共享相册在 iOS/macOS 用户之间共享照片。我需要用一些带有应用程序特定参数的数字来描述每张照片。

我研究了几个想法,但没有一个奏效:

  1. 将数字(或字符串)写入 EXIF 或 IPTC 元数据字段

    • 遗憾的是,Apple 云共享相册不包含用户可写的元数据字段
  2. 在照片文件名中插入数字,例如IMG_1234-i1-i2-...-iN.JPEG

    • 很遗憾,我找不到在“照片”应用中更改照片文件名的方法。
  3. 将整数与照片标识符一起并行保存在 iCloud 中,因此可以使用照片标识符在每台设备上检索数据

    • 我假设 PHObject.localIdentifier 在不同设备上读取的云共享相册中不持久。我没有检查这个,但是为什么 identifier 会被称为 local

iOS/macOS Photos 应用的云端共享相册中的照片是否可以绑定(bind)少量数据

最佳答案

按照我在 this answer 中找到的私有(private) API 的描述我为 PHAsset 创建了以下扩展:

extension PHAsset {
    var cloudIdentifier: String {
        return (self.value(forKey: "cloudIdentifier") as? String) ?? "?"
    }
}

您现在可以从 PHAsset 实例获取的 cloudIdentifier 在共享同一相册的任何设备上的整个云中持久存在。使用持久性 PHAsset 标识符,可以从最初的问题中实现解决方案 #3。

关于ios - iOS/macOS云共享相册中如何给照片附加短数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57562286/

相关文章:

iphone - 如何在不使用仪器的情况下查找 iphone 应用程序中的内存分配和泄漏?

swift - 将数据从flutter传递到原生IOS

swift - 如何在 Swift/SpriteKit 中检测与 2 个以上对象的碰撞

metadata - elasticsearch中的主节点网关和其他节点网关有什么区别?它们都存储元数据,不是吗?

ios - 如何检查扫描的二维码是否包含除数字之外的任何内容

ios - 在 iOS 上原生渲染 UILabel/UITextfield 中的 LaTeX 代码

iOS UILocalNotification 声音

html - html 5 中的图片标签元标记

android - 使用 animateToRegion() 与 animateCamera() 的优缺点

arrays - 如何从 Swift 中的对象字典中获取键和值?