J'essaie de mettre en œuvre la capacité de StoreKit à avoir des abonnements automatiquement renouvelables dans mon application macOS.
Après avoir lu des dizaines de pages et vérifié des exemples, je comprends comment tout s'assemble mais je n'arrive pas à le faire fonctionner correctement.
Ce que j'essaie de faire :
- Dès que l'application démarre, vérifiez si un abonnement actif est disponible en évaluant le reçu local. Je vérifie spécifiquement l'indisponibilité d'une date de résiliation dans n'importe quel Entrées dans le champ "In-App Purchase du reçu et si la date d'expiration de l'abonnement est dans le futur.
- Dans le cas où aucun abonnement (actif) n'est disponible, j'achète l'abonnement en utilisant les API de StoreKit.
Les deux scénarios fonctionnent bien car ce flux fonctionne parfaitement lorsque l'abonnement est acheté pour la première fois. Cependant, le reçu n'est pas mis à jour automatiquement après la date d'expiration de l'abonnement. Je m'attends à ce que le reçu soit mis à jour périodiquement, comme cela est également indiqué sur le site Web de l'entreprise. Abonnement à renouvellement automatique et réception de l'application . Par conséquent, la première étape décrite ci-dessus échoue car la date d'expiration se trouve à un moment donné dans l'historique et est donc considérée comme expirée.
Deux choses que je trouve étranges :
- Mon instance SKPaymentTransactionObserver n'est appelée qu'après l'achat de l'abonnement (après que l'utilisateur l'ait explicitement acheté). Elle n'est jamais appelée lorsque l'abonnement expire et doit être renouvelé automatiquement (comme indiqué dans l'article de blog ci-dessus) ;
- Demander explicitement la mise à jour de mon reçu (contenant la date d'expiration du PEI) à l'aide de l'API SKReceiptRefreshRequest échoue en appelant sa méthode de délégation request:didFailWithError :. L'objet d'erreur étant nul, je ne vois pas pourquoi la mise à jour échoue.
Je peux partager le code mais j'ai le sentiment que ce n'est pas lié au code mais plutôt à une sorte de paramètre et/ou de comportement du projet/environnement que je ne comprends pas complètement.
Avez-vous des suggestions sur ce qu'il faut essayer ?