Partager via


Achat de produits non consommables dans Xamarin.iOS

Les produits non consommables sont « détenus » par le client. L’attente est qu’ils auront toujours accès à eux, même si leur appareil est perdu/volé ou qu’ils achètent un nouveau. Elles sont utiles pour les livres, les magazines, les niveaux de jeu, les filtres photo, les « pro-caractéristiques », etc. Une fois qu’un utilisateur a acheté un produit non consommable, il n’a jamais à le payer à nouveau. Si votre code les permet accidentellement d’essayer, StoreKit affiche un message indiquant qu’il a déjà été acheté.

Exemple de produits non consommables

L’exemple contient un projet appelé NonConsumables. L’exemple de code montre comment implémenter des produits non consommables à l’aide de filtres photo comme exemple. Une fois que vous avez acheté un filtre, vous pouvez l’appliquer à la photo de nouveau. Vous n’avez jamais besoin de le ré-acheter.

Le processus d’achat s’affiche dans cette série de captures d’écran : le bouton Acheter devient le bouton d’activation des fonctionnalités :

Le processus d’achat est illustré dans cette série de captures d’écran

Le processus d’achat est le même qu’un produit consommable ; la principale différence réside dans le suivi de l’achat dans le code de l’application. Dans cet exemple, le bouton Acheter est disponible uniquement si le produit n’a pas déjà été acheté, sinon le bouton active la fonctionnalité elle-même.

Le diagramme suivant montre les interactions entre les classes et le serveur App Store pour effectuer un achat de produit non consommable :

Interactions entre les classes et le serveur App Store pour effectuer un achat de produit non consommable

La principale différence par rapport à l’exemple consommable est qu’une fois l’achat terminé, l’interface utilisateur est mise à jour pour empêcher le réapprovisionnement. Dans cet exemple, la notification d’une transaction réussie met à jour l’interface utilisateur afin que le bouton Acheter soit converti en un bouton qui active la fonctionnalité elle-même.

Réapprovisionnement de produits non consommables

Votre code doit normalement masquer ou réaffecter un bouton d’achat une fois que le produit a été acheté avec succès, afin d’empêcher l’utilisateur de réessayer d’acheter le produit. L’exemple d’application effectue cette opération en modifiant le bouton Acheter dans le bouton qui rend l’exemple de travail de filtre photo.

Il existe des situations où une application ne peut pas indiquer si un produit non consommable a déjà été acheté :

  • Si une application est supprimée et réinstallée sur un appareil, tous les enregistrements d’achat sont supprimés (sauf si/jusqu’à ce que l’utilisateur effectue une restauration de sauvegarde).
  • Si l’utilisateur a installé l’application sur deux appareils (ou plus) et effectue un achat sur l’un des appareils. Les autres appareils continueront d’afficher le produit disponible pour l’achat.
  • Si un client tente de réinscrire un produit non consommable dans ces situations, l’App Store réexécutera le produit sans frais. L’interface utilisateur s’affiche initialement pour effectuer un achat (par exemple, une alerte de confirmation s’affiche et l’ID Apple sera requis), mais l’utilisateur verra ensuite un message leur indiquant que le produit a déjà été acheté.

Le chemin du code dans ce scénario est exactement le même qu’un achat régulier, les seules différences sont les suivantes :

  • L’utilisateur n’est pas facturé à nouveau pour le produit.
  • L’objet SKPaymentTransaction transmis à l’application aura une OriginalTransaction propriété qui fait référence à la transaction générée lors de l’achat initial du produit.
  • Les applications qui vendent des produits non consommables doivent également implémenter la fonctionnalité de restauration de StoreKit pour aider les utilisateurs à récupérer les achats existants.