web-dev-qa-db-fra.com

Que signifie "restaurer les achats" dans les achats In-App?

Je ne comprends pas vraiment cette idée. Dois-je fournir un bouton de restauration à l'utilisateur? Quelle méthode cette méthode doit-elle invoquer? Que va restaurer va faire?

24
Geri

Vous restaurez généralement vos achats avec ce code:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

Il va réinvoquer -paymentQueue:updatedTransactions sur le ou les observateurs pour les articles achetés. Ceci est utile pour les utilisateurs qui réinstallent l'application après la suppression ou l'installent sur un autre appareil.

Tous les types d'achats intégrés ne peuvent pas être restaurés.

30
Felix

Vous recevrez un message de rejet de Apple simplement parce que le produit que vous avez enregistré pour l'achat inApp peut appartenir à la catégorie Abonnements non renouvelables et produits consommables. Ce type de produit ne sera pas automatiquement renouvelable. Vous devez avoir le bouton de restauration explicite dans votre application.

pour les autres types de produits, il sera automatiquement restauré.

Veuillez lire le texte suivant qui clarifiera votre concept à ce sujet:

Une fois qu'une transaction a été traitée et supprimée de la file d'attente, votre application ne la voit normalement plus jamais. Toutefois, si votre application prend en charge les types de produits qui doivent être restaurés, vous devez inclure une interface permettant aux utilisateurs de restaurer ces achats. Cette interface permet à un utilisateur d'ajouter le produit à d'autres périphériques ou, si le périphérique d'origine a été effacé, de restaurer la transaction sur le périphérique d'origine.

Store Kit fournit une fonctionnalité intégrée permettant de restaurer les transactions pour les produits non consommables, les abonnements auto-renouvelables et les abonnements gratuits. Pour restaurer des transactions, votre application appelle la méthode restoreCompletedTransactions de la file de paiement. La file d'attente de paiement envoie une demande à l'App Store pour restaurer les transactions. En retour, l'App Store génère une nouvelle transaction de restauration pour chaque transaction précédemment effectuée. La propriété originalTransaction de l'objet de transaction de restauration contient une copie de la transaction d'origine. Votre application traite une transaction de restauration en récupérant la transaction d'origine et en l'utilisant pour déverrouiller le contenu acheté. Une fois que Store Kit a restauré toutes les transactions précédentes, il avertit les observateurs de la file de paiement en appelant leur méthode paymentQueueRestoreCompletedTransactionsFinished:.

Si l'utilisateur tente d'acheter un produit restaurable (au lieu d'utiliser l'interface de restauration que vous avez implémentée), l'application reçoit une transaction normale pour cet élément, et non une transaction de restauration. Cependant, l'utilisateur n'est pas facturé à nouveau pour ce produit. Votre application doit traiter ces transactions de la même manière que celles de la transaction initiale. Les produits non consommables et les consommables non renouvelés ne sont pas automatiquement restaurés par Store Kit. Les abonnements non renouvelables doivent toutefois être restaurés. Pour restaurer ces produits, vous devez enregistrer les transactions sur votre propre serveur lors de leur achat et fournir votre propre mécanisme pour restaurer ces transactions sur les appareils de l'utilisateur.

7
Gaurav

Est-ce une fonctionnalité optionnelle?.

Si vous ne le fournissez pas lorsque l'utilisateur tentera d'acheter un produit non consommable, AppStore restaurera l'ancienne transaction. Mais votre application pensera qu'il s'agit d'une nouvelle transaction.

Si vous fournissez un mécanisme de restauration, votre responsable des achats verra la transaction restaurée.

Si l'application doit distinguer ces options, vous devez fournir une fonctionnalité permettant de restaurer les produits achetés précédemment.

2
Nekto