Passbook pour les développeurs

Suite à ma petite introduction à Passbook (lire Voyages-sncf et SNCF : les billets de train dans Passbook), je reviens faire un topo plus pratique et technique sur les points importants de Passbook.
Passbook peut être une opportunité pour une entreprise ou un service de s’intégrer dans l’éco-système de l’iPhone. Aujourd’hui, il n’est pas nécessaire d’avoir une application sur l’App Store pour pouvoir utiliser Passbook. Un compte développeur iOS suffit.

D’où viennent les pass ?

Chaque carte d’embarquement, ticket de spectacle ou carte de fidélité peut être obtenu par plusieurs moyens tels que le mail (en pièce-jointe comme le fait Capitaine Train), par le web comme un fichier à télécharger ou encore directement dans une application iOS.
Dans tous les cas cités, le fichier PKPASS (conteneur du pass) est généré par un serveur maintenu par l’émetteur du billet. Apple ne fournira/générera jamais de fichiers Passbook pour des entités externes. En clair, un pass créé dans une application est un fichier téléchargé par l’application, depuis le serveur de l’émetteur.

Les fichiers compatibles Passbook sont uniquement utilisables sur iPhone et iPod touch équipés de iOS 6 et ultérieur. Tous les modèles d’iPad ne savent pas lire ces fichiers. Seul Mountain Lion vous donnera un aperçu du pass avec le Passbook Viewver intégré à OS X, mais aucune mise à jour ou stockage ne sera possible sur votre ordinateur.

Comportement et organisation des pass

Passbook centralise l’ensemble de vos cartes. L’application Passbook est aussi responsable de leur mise à jour (si vous proposez cette fonctionnalité).
L’ajout et la suppression de pass est possible avec une action utilisateur. Une application pourra quand à elle uniquement remplacer ou supprimer des pass sans action utilisateur.

Les pass sont organisés verticalement selon le type de carte et plus précisément selon leur identifiant de type. De manière horizontale, on retrouvera les billets d’un même identifiant de type. Un pass est déterminé unique grâce au couple identifiant de type et numéro de série du pass.

Le système se charge d’afficher les notifications relatives à la date d’importance (relevantDate) ou encore aux lieux importants. D’autres notifications peuvent être distribuées pour les champs d’un pass qui ont changé suite à une mise à jour.
L’émetteur d’un pass peut demander à Passbook de mettre à jour les pass pour un identifiant de type. Cela passe par l’envoi d’une notification Push « vide » depuis le serveur de l’émetteur avec le certificat correspondant à l’identifiant de type. Cela signifie donc que Passbook demandera une mise à jour de tous les pass pour un type.

Si vous utilisez la clé de personnalisation de champs de votre pass, une notification sera présentée à l’utilisateur et si celui-ci l’ouvre, le champ concerné par la notification sera entouré.

Comment créer un Pass ?

Un pass est un conteneur signé qui se compose de plusieurs fichiers. Il contient les ressources graphiques (icônes, visuels, logos…) et un fichier de description du pass au format JSON.
Je ne vous explique pas quels sont les possibilités de création, elle sont décrites dans le Guide de programmation Passbook.

L’important à savoir, c’est que selon le type de carte que vous créez, certains noeuds devront être présents dans le fichier JSON. De même, les valeurs des noeuds doivent respecter une norme d’écriture (dates par exemple).
Attention, toute erreur dans la composition du fichier JSON ou tout oubli d’une clé obligatoire rendra inutilisable votre carte.

Pour créer le fichier PKPASS, je vous recommande la classe Passbook pour PHP disponible sur le dépôt de son créateur, ou, si l’envie vous prend, d’utiliser les fichiers serveur Ruby mis à disposition par Apple dans les Passbook Materials.

Comme vu plus haut, les notifications concernant les cartes sont gérées par le système grâce aux informations importantes (relevantDate et locations). Il est néanmoins possible de personnaliser les notifications. Pour chaque clé contenant associant la clé changeMessage, une notification sera postée à l’utilisateur avec en titre, le nom de l’entreprise (OrganizationName) et la valeur associée à changeMessage.
Par exemple, un pass est mis à jour (manuellement ou par push), pour chaque clé ayant changé et comportant la clé associée changeMessage, une notification sera présentée à l’utilisateur.

Une fois le fichier JSON et les ressources prêts, il faut compresser et signer cet ensemble dans une fichier PKPASS qui pourra ensuite être distribué.

En bonus, quelques sites pour générer et utiliser des pass depuis votre iPhone: PassSource, PassKit et une foule d’exemples sur Passdock.

Ressources : Passbook Materials, Passbook format reference.

Auteur: Benoit DELDICQUE

Actuellement en poste sur Strasbourg, je suis en charge de la conception et la réalisation d'applications iOS pour iPhone, iPad et iPod touch.

Articles similaires

Commentaires fermés.