web-dev-qa-db-fra.com

Gestion des abonnements au compte d'utilisateur iOS Sandbox Test

J'essaie actuellement d'ajouter IAP à une application existante. À cette fin, j'ai ajouté quelques produits et créé des utilisateurs de test. Les produits sont des abonnements récurrents. L'appareil avec lequel je teste est un iPhone 4S avec iOS 5.1.

Je peux interroger avec succès le magasin pour mes produits et les acheter avec succès avec mes nouveaux utilisateurs de test. Le problème que j'ai, c'est que si j'essaie de gérer mes abonnements à partir de l'application Paramètres du magasin, cela m'oblige à consulter mon compte en me disant que "Ce compte n'a été utilisé pour acheter rien dans l'AppStore, veuillez vérifier votre compte et continuer . " Si je vérifie le compte, il ne me permettra pas de continuer sans fournir d'informations sur la carte de crédit.

Le résultat final est que je ne peux jamais annuler mes abonnements de test. J'ai supprimé les utilisateurs de test et en ai créé de nouveaux, supprimé et réinstallé l'application, tué l'application StoreApp et les paramètres, redémarré l'appareil, vérifié les comptes par e-mail avant d'acheter, pas vérifié les comptes par e-mail avant d'acheter ... toutes les permutations semblent échouer.

Parfois, j'achèterai le même abonnement deux fois, ce qui invitera StoreKit à me demander de gérer mes paramètres d'abonnement. Parfois, cela se traduit par le processus précédent de "Revue de compte", et parfois il en résulte une alerte qui dit "ne peut pas se connecter à iTunes Store".

Je n'ai plus d'idées pour continuer.

EDIT - Voici le flux d'événements avec tout utilisateur de test iTunesConnect que je crée

Abonnement initial
Initial Subscription

Utiliser l'ID existant
Use Existing ID

Connexion au compte de test
Test Account Sign-In

Gérer l'abonnement
Manage Subscription

Connexion à l'AppStore
AppStore Sign-in

Ne peut pas se connecter à l'App Store
Cannot Connect

Vérifiez votre compte
Review

Ensuite, le processus d'examen m'oblige à saisir les informations de la carte de crédit, même si mon adresse est "1 Infinite Loop Cupertino, CA" (c'est-à-dire qu'il sait qu'il s'agit d'un compte de test).

43
pseabury

Il y a une réponse par Apple. (Rich Kubota) À propos des tests d'abonnement dans un environnement sandbox.

Il s'agit d'un trou de bogue dans le processus de simulation d'achat intégré. Il n'existe aucun moyen pris en charge pour simuler le processus d'annulation ou pour simuler le processus de gestion de l'abonnement à partir d'une application iTunes des utilisateurs. Cette limitation existe également avec la version TestFlight de l'application. Lorsque vous soumettez la version TestFlight de l'application à un utilisateur et qu'il teste l'application, le compte d'utilisateur fonctionne réellement dans l'environnement sandbox. Vous l'avez vérifié car l'application TestFlight n'apparaîtra pas comme une application gérée dans la section d'abonnement géré des utilisateurs TestFlight iTunes. En effet, l'application se trouve dans l'environnement sandbox, dont l'application iTunes ne sait rien.

Cela fait un moment que je n'ai pas répondu sur ce forum, cependant, le meilleur moyen de vérifier que l'application gérera le processus de renouvellement automatique est de vérifier que l'application gère également la détection des renouvellements d'abonnement à renouvellement automatique via la transactionObserver correctement . Par exemple, si vous achetez un abonnement de 1 mois dans l'environnement sandbox. Ensuite, tuez l'application, attendez 6 minutes, puis relancez l'application, le transactionObserver détecte-t-il qu'une transaction incomplète (le renouvellement compressé d'un mois) doit être traitée.

Ceci est très similaire à ce qui se passe dans le cas où l'utilisateur redémarre un abonnement dans la page de gestion des abonnements iTunes. La transaction est enregistrée par l'iTunes Store et une transaction incomplète pour le compte utilisateur/ID de bundle d'application est activée. Lorsque l'application démarre et active le transactionObserver (via un appel à addTransactionObserver), la transaction incomplète est détectée et la méthode delefgate de Transaction mise à jour est appelée pour traiter le renouvellement. L'application peut ensuite valider l'applicationReceipt pour vérifier qu'il existe désormais un élément de tableau in_app pour l'élément d'abonnement à renouvellement automatique qui a une expire_date supérieure à la date actuelle et sait que l'abonnement à renouvellement automatique product_id est actif.

Quant à tester qu'un abonnement à renouvellement automatique a été annulé, cela nécessite à nouveau la prise en charge du serveur iTunes Store pour simuler. Cependant, le processus de validation des reçus fonctionne quotidiennement et peut détecter quel élément du tableau in_app est le plus récent pour l'abonnement à renouvellement automatique, puis détecter si l'annulation_date est définie indique à l'application que l'abonnement a été annulé. À titre de remarque, il suffit de détecter que le champ cancel_date pour n'importe quel élément peut entraîner un faux positif. L'utilisateur a peut-être annulé un abonnement à renouvellement automatique plus tôt, puis a décidé qu'il n'était plus si mauvais et a racheté l'article. Pour cette raison, la logique doit s'assurer que le champ cancel_date est défini dans l'élément de tableau in_app le plus récent pour savoir que l'abonnement en cours a effectivement été annulé. Un problème que j'essaie de déterminer - si un élément annulé aura la date d'expiration_date déplacée vers la date d'annulation_de sorte qu'un abonnement annulé puisse apparaître comme un abonnement expiré. Cela semble être la bonne décision - mais ces informations sont contrôlées par l'équipe du serveur iTunes Store.

Si vous souhaitez poursuivre un mécanisme pour simuler ces fonctionnalités de l'environnement du magasin de production dans le bac à sable, je vous suggère de soumettre une demande d'amélioration à l'aide de la page Web Apple Developer Bug Report. Veuillez sélectionner iTunesConnect Produit pour le rapport de bogue, car la suggestion est quelque chose que l'iTunes Store doit simuler, pas iOS.

15
Surjeet Rajput

Vous ne pouvez pas vraiment gérer les abonnements dans le bac à sable, mais comme Jean-Paul de Ville de Goyet l'a découvert sur Forums des développeurs Apple :

Les abonnements d'un mois se renouvellent automatiquement toutes les 5 minutes. Jusqu'ici tout va bien. Ils se renouvellent automatiquement 5 fois puis ils s'arrêtent, donc après 25 minutes, vous obtiendrez l'erreur 21006. Cependant, même lors du rachat du même abonnement, il ne sera PAS renouvelé automatiquement à nouveau sur le même compte de test car il a déjà été renouvelé automatiquement 5 fois. Donc, si vous souhaitez tester le renouvellement et que vous avez joué avec ces abonnements pendant un certain temps, vous devez créer un nouvel utilisateur de test de connexion iTunes. Honnêtement, cela est très ennuyeux et il serait beaucoup plus facile de réinitialiser tout l'historique des achats d'un compte d'utilisateur de test.

J'ai testé mes abonnements de la même manière.

57
suda