【问题标题】:How unique is MPMediaItemPropertyPersistentID?MPMediaItem 属性持久 ID 的唯一性如何?
【发布时间】:2012-08-25 02:24:54
【问题描述】:

MPMediaItemPropertyPersistentID 的唯一性如何?将 ID 列表同步到连接到同一 iTunes 帐户的另一台设备时,它甚至可以工作吗?

我想实现一个 iCloud 同步播放列表解决方案,将 ID 存储为一个列表,我需要知道这是否可行。

【问题讨论】:

    标签: objective-c ios itunes icloud mpmediaitem


    【解决方案1】:

    根据documentation (强调我的)...

    MPMediaItemPropertyPersistentID 标识符的值保持不变 跨应用程序启动和跨不改变 媒体项目的同步状态。 价值不保证 在同步/取消同步/同步周期中持续存在。

    因此,鉴于它甚至不会在此基础上持续存在,如果它以足够健壮的方式在设备上持续存在的话,我会感到惊讶(如果有的话)。

    【讨论】:

    • 我错过了这部分文档。看来我得另寻他路了……
    • 虽然有点笨拙,但您可能必须通过每个 MPMediaEntity 可用的 valueForProperty 数据来构造一致的东西。 (即:MPMediaItemPropertyTitle、MPMediaItemPropertyAlbumTitle、MPMediaItemPropertyArtist 等)
    【解决方案2】:

    据我了解,这是不可能的。我认为这个 ID 只对每个设备都是持久的。它不是 iTunes Store 中特定歌曲的唯一标识符。它只是您自己同步歌曲的 ID。

    当您阅读文档时,您会发现这个 ID 是多么脆弱。

    “不保证该值在同步/取消同步/同步周期内保持不变。”

    因此,如果您将歌曲数据库与 iTunes 同步,并可能从您的 iOS 设备中删除一首歌曲,然后再次同步并将其放回您的设备,您可能无法再次获得该歌曲的相同 ID。并且肯定不会跨其他设备。

    所以我认为,除非您在 Mac 上为 iTunes 目录或您自己的 iTunes 目录中的每首歌曲获得一个全球相同的标识符(Mac 必须在其中处理 ID),否则您尝试做的事情是行不通的.

    【讨论】:

      【解决方案3】:

      其他的答案有点模糊,下面是我自己的经验和测试的答案:

      1) 您不能使用 MPMediaItemPropertyPersistentID 来获取设备之间相同的 ID。
      2) MPMediaItemPropertyPersistentID 将在设备与另一个 iTunes 库同步或从设备中删除所有音乐然后再次同步时更改。

      当歌曲在设备上同步时,iTunes 会创建并存储 ID。如果未同步,则删除 ID。

      【讨论】:

        【解决方案4】:

        如果有人像我一样使用 Google 搜索来到这里:

        在我的设备升级 iOS 后,我确认了 middaparka 上面所说的内容,当时我的音乐应用尝试使用升级前的 persistentID。 ID 发生了变化,我最终(不知不觉地)从我的音乐库中听了很多我通常不听的歌曲......

        所以我接受了 middaparka 的建议,并通过异或来自 title、artistName、albumTitle 和 duration 的哈希值构造了一个 persistentKey。在核心数据库初始化期间构建persistentKey将在以后节省时间,通过在“正常操作代码”中获取项目时避免多个字符串比较。

        persistentKey 策略适用于歌曲。然而,当我从标题、艺术家和发行年份对专辑进行哈希处理时,我遇到了一次冲突。

        我有两张由不同艺术家在 1976 年发行的同名专辑。当专辑名称和艺术家的哈希值是异或时,它们相互抵消了。我最终在持续时间内使用哈希而不是艺术家,这很有效。

        我可能最终会改进算法以生成persistentKeys...

        【讨论】:

          猜你喜欢
          • 2013-09-24
          • 2016-06-11
          • 1970-01-01
          • 1970-01-01
          • 2012-06-11
          • 2017-01-10
          • 2012-02-18
          • 2015-05-10
          • 1970-01-01
          相关资源
          最近更新 更多