Wie einzigartig ist MPMediaItemPropertyPersistentID?

8

Wie einzigartig ist MPMediaItemPropertyPersistentID? Funktioniert es sogar, wenn die ID-Liste mit einem anderen Gerät synchronisiert wird, das mit demselben iTunes-Konto verbunden ist?

Ich möchte eine iCloud-synchronisierte Playlist-Lösung implementieren, die die IDs als Liste speichert und ich muss wissen, ob das möglich ist.

    
miho 30.08.2012, 11:08
quelle

4 Antworten

7

Wie in der Dokumentation ( Betonung meiner) ...

  

Der Wert der Kennung MPMediaItemPropertyPersistentID bleibt bestehen   über Anwendungsstarts hinweg und über Synchronisierungen hinweg, die das nicht ändern   Synchronisierungsstatus des Medienelements Der Wert ist nicht garantiert   über einen Sync / unsync / sync-Zyklus hinweg bestehen.

Angesichts dessen, dass es auf dieser Grundlage nicht einmal bestehen bleibt, würde ich mich wundern, wenn es auf allen Geräten ausreichend robust bleiben würde, wenn überhaupt.

    
John Parker 02.09.2012, 15:28
quelle
4

Nach meinem Verständnis ist das nicht möglich. Ich denke, dass diese ID nur für jedes Gerät persistent ist. Es ist kein eindeutiger Bezeichner für einen bestimmten Titel im iTunes Store. Es ist nur eine ID für Ihre eigenen synchronisierten Songs.

Wenn Sie die Dokumentation lesen, werden Sie sehen, wie fragil diese ID sein könnte.

  

"Es ist nicht garantiert, dass der Wert über einen Sync / unsync / sync-Zyklus bestehen bleibt."

Wenn Sie also Ihre Song-Datenbank mit iTunes synchronisieren und einen Song möglicherweise von Ihrem iOS-Gerät und der Synchronisierung löschen und wieder auf Ihr Gerät stellen, erhalten Sie unter Umständen nicht die gleiche ID für diesen Song. Und natürlich nicht über andere Geräte.

Ich denke also, was Sie versuchen, wird nicht funktionieren, bis Sie einen weltweit identischen Bezeichner für jeden Titel des iTunes-Katalogs oder Ihren eigenen iTunes-Katalog auf dem Mac erhalten (wo der Mac die IDs verarbeiten muss) .

    
Fab1n 02.09.2012 15:32
quelle
2

Die anderen Antworten sind ein wenig groß vage, also hier ist eine Antwort aus meinen eigenen Erfahrungen und Tests:

1) Sie können MPMediaItemPropertyPersistentID nicht verwenden, um eine ID zu erhalten, die zwischen Geräten gleich ist.
2) MPMediaItemPropertyPersistentID wird geändert, wenn das Gerät mit einer anderen iTunes-Mediathek synchronisiert wird oder alle Musiktitel vom Gerät entfernt und dann erneut synchronisiert werden.

Die ID wird von iTunes erstellt und gespeichert, wenn der Song auf dem Gerät synchronisiert wird. Wenn es nicht synchronisiert ist, wird die ID gelöscht.

    
Fabian Kreiser 02.09.2012 15:37
quelle
1

Falls jemand anders hier landet, wie ich, mit einer Google-Suche:

Ich habe nach einem iOS-Upgrade meines Geräts bestätigt, was middaparka oben gesagt hat, als meine Musik-App versuchte, persistente IDs vor dem Upgrade zu verwenden. Die IDs hatten sich geändert, und ich hörte (unwissentlich) viele Lieder aus meiner Bibliothek, die ich normalerweise nicht höre ...

Also habe ich middaparkas Ratschlag genommen und einen persistenten Schlüssel erstellt, indem ich die Hashes von title, artistName, albumTitle und duration exclusiv-oring. Das Erstellen des persistentKey während der Core-Datenbank-Initialisierung wird später Zeit sparen, indem mehrere Zeichenfolgenvergleiche beim Abrufen von Elementen in "normalem Betriebscode" vermieden werden.

Die persistentKey-Strategie funktionierte für Songs richtig. Wenn ich jedoch einen Hash für Alben von Titel, Künstler und ReleaseYear gemacht habe, endete ich mit einer Kollision.

Ich hatte zwei selbstbetitelte Alben von verschiedenen Künstlern, die 1976 veröffentlicht wurden. Als die Hashes für den Albumtitel und die Künstlerin exklusiv waren, löschten sie sich gegenseitig aus. Ich habe den Hash für die Dauer anstelle des Künstlers verwendet, und das hat funktioniert.

Ich könnte am Ende den Algorithmus für die Erstellung der persistentKeys später ... verfeinern ...

    
Carl Smith 29.07.2015 10:52
quelle