8
votes

Quelle est l'unique propriété MmeMediAitem ID persistante?

Quelle est la propreté de MmeMediAtEmProperTypeSistTentiD? Sera-t-il même fonctionner lors de la synchronisation de la liste des identifiants vers un autre appareil connecté au même compte iTunes?

Je souhaite mettre en place une solution de liste de lecture synchronisée iCloud qui stocke les identifiants comme une liste et j'ai besoin de savoir si cela sera possible.


0 commentaires

4 Réponses :



4
votes

Dans ma compréhension, cela n'est pas possible. Je pense que cet identifiant n'est persistant que pour chaque appareil. Ce n'est pas un identifiant unique pour une chanson spécifique dans le magasin iTunes. Ce n'est qu'un identifiant pour vos propres chansons synchronisées.

Lorsque vous lisez la documentation, vous verrez à quel point cet identifiant pourrait être fragile.

"La valeur n'est pas garantie de persister sur un cycle Sync / Synchronisation / Sync."

Donc, si vous synchronisez votre base de données de chanson avec iTunes et peut-être supprimer une chanson de votre périphérique iOS et la synchronisation à nouveau et revenez-le à votre périphérique, vous ne pouvez pas récupérer le même identifiant pour cette chanson. Et sûr de pas sur d'autres appareils.

Donc, je pense que ce que vous essayez de faire ne fonctionnera pas, tant que vous obtenez un identifiant identique mondial pour chaque chanson du catalogue iTunes, votre propre catalogue iTunes sur le Mac (où le Mac doit gérer les ID) .


0 commentaires

2
votes

Les autres réponses sont un peu grandes vagues, alors voici une réponse de mes propres expériences et tests:

1) Vous ne pouvez pas utiliser MmediAitMProperTypeSistTentiD pour obtenir un ID qui est égal entre les périphériques.
2) Le MmeMediAtEmPropertyTypeSistTentiD changera lorsque l'appareil est synchronisé avec une autre bibliothèque iTunes ou toute la musique est supprimée de l'appareil, puis synchronisé à nouveau.

L'ID GET est créé et stocké par iTunes lorsque la chanson est synchronisée sur l'appareil. Si c'est non colonisé, l'identifiant est supprimé.


0 commentaires

2
votes

Si quelqu'un d'autre atterrit ici, comme moi, en utilisant une recherche Google:

J'ai confirmé ce que Middaparka a déclaré ci-dessus après une mise à niveau IOS de mon appareil, lorsque mon application musicale a essayé d'utiliser des persistentides d'avant la mise à niveau. Les identifiants avaient changé et j'ai fini par l'écoute de plusieurs chansons de ma bibliothèque que je n'écoute pas normalement ...

J'ai donc pris les conseils de Middaparka et avons construit une persistance de persistance par exclusivité des hachages du titre, de l'artistetName, de l'albumtitle et de la durée. Construire la persistance de la base lors de l'initialisation de la base de données de base sera la plus tard, en évitant plusieurs comparaisons de chaînes lors de la récupération des éléments dans "Code de fonctionnement normal".

La stratégie de persistance de la persistance a fonctionné correctement pour les chansons. Cependant, lorsque j'ai fait un hasch pour les albums du titre, de l'artiste et de la sortie, j'ai fini par une collision.

J'avais deux albums auto-intitulé par différents artistes libérés en 1976. Lorsque les hachages pour le titre de l'album et l'artiste étaient exclusifs, ils se sont annulés. J'ai fini par utiliser le hash pour la durée au lieu de l'artiste, et cela a fonctionné.

Je peux finir par raffiner l'algorithme pour générer les persistants plus tard ...


0 commentaires