Comment prendre en charge plusieurs appareils avec un achat in-app sans renouvellement?

Je construis une application iOS qui inclura un IAP avec un abonnement sans renouvellement. Apple fournit ce nugget dans leur aperçu de l'IAP :

Vous devez fournir des abonnements sans renouvellement à tous les appareils appartenant à l'user. Les abonnements ne se renouvelant pas ne sont pas automatiquement synchronisés avec tous les appareils par Store Store; vous devez implémenter cette infrastructure vous-même. Par exemple, la plupart des abonnements sont fournis par un server externe; Votre server devra implémenter un mécanisme pour identifier les users et associer les achats d'abonnements à l'user qui les a achetés.

Je voudrais suivre cette règle: je veux que mes users puissent profiter de l'abonnement qu'ils achètent sur un appareil sur d'autres appareils. Alors, comment puis-je identifier le même user sur leur iPhone et iPad? Je comprends que vous ne pouvez pas utiliser l'identifiant Apple et vous ne pouvez pas vous fier à une méthode d'logging.

Je viens de find cette question maintenant; la réponse donnée ne semble pas fonctionner. Il doit y avoir quelque chose de plus élégant que d'autres ont fait.

J'ai une suggestion de Gavin McKenzie , qui me semble être le meilleur pari que j'ai entendu:

Lors de l'achat de l'abonnement, mettez un "code abrégé" à la disposition de l'user. Le code serait également stocké sur le server, lié au count de cet user. Lorsqu'ils cliquent sur Restaurer sur un autre périphérique, requestz le code de fonction du périphérique et du count d'origine, ce qui permet de lier ces périphériques set.

Gavin a en outre suggéré l'utilisation de cette méthode dans un "appariement" similaire à Bluetooth: lors de la restauration, initier l'appariement sur le périphérique A, qui génère le code court et le pousse vers le server. Le périphérique B peut alors utiliser ce code. Cinq minutes plus tard, ou lorsque l'écran d'appariement est rejeté, le code est supprimé.

Je ne sais pas comment cela pourrait se produire si vous voulez restaurer le même périphérique, par exemple, après avoir supprimé le téléphone et restauré. Mais cela semble être un bon début.

Si vous pouvez abandonner la prise en charge d'iOS en dessous de la version 5.0, vous pouvez utiliser iCloud pour synchroniser une paire valeur / key sur les appareils de l'user.

Regarde ça:

http://iphonedevsdk.com/forum/business-legal-app-store/88698-floored-by-new-rejection.html

Apparemment, vous pouvez exiger un nom d'user / mot de passe avant l'achat. C'est vraiment la seule façon qui a du sens. Un code peut être partagé par des milliers de personnes, ce qui est mauvais.

Découvrez Frac.as. Il fait une variante de l'appariement "code court" suggéré ci-dessus, mais avec quelques astuces embeddedes pour éviter les abus. C'est une API SaaS, avec un niveau gratuit généreux.