[Résolu] Appli payante supprimée par le user avant paiement et réinstallée

busterTheobusterTheo Membre
juin 2017 modifié dans Apple Developer Programs #1

Bonjour à  tous, je reviens vers vous car je n'ai strictement rien trouvé pour résoudre mon problème.


 

Mon app est gratuite pour 21 jours, puis achat version payante par achat intégré (une seule app).

 

Je gère tout ça dans mon code avec les UserDefault... Tout va bien.

 

Par contre, si le user supprime l'app lorsqu'il doit l'acheter, et qu'il la redownload, je ne trouve pas comment détecter qu'il l'avait déjà  downloadé et atteint la durée limite pour l'envoyer automatiquement vers l'achat obligatoire.

 

Je crois avoir compris qu'il sagit de keychain, mais je ne trouve pas comment faire.

 

Une super idée serait la bienvenue.

 

Merci d'avance.

 

busterTheo

 

 

PS : Pour ceux qui sont intéressés par ce sujet, je peux mettre du code si ils le désirent.

Voici au passage, mes deux posts précédents concernant ces vastes sujet :



Réponses

  • L'utilisation de Keychain est une fasse bonne idée. Surtout depuis la 10.3 ou les items Keychain semble être effacés en même temps que l'app.

  • ifouifou Membre

    Oui, peut être qu'une version plus abouti pourrait consister à  stocker les mêmes informations dans le key/value store d'Apple. A confirmer avec les gens sur le forum. Suis-je dans le juste?


     


    L'inconvénient de cette solution, c'est que si l'utilisateur fait "l'effort" de supprimer les données iCloud de ton application, alors le problème reste entier. Donc on a fait que repousser le problème. Mais je suppose fortement que pour 90% des utilisateurs cette simple idée devrait suffire.


     


    A vrai dire, je pense que l'implémentation que tu proposes, en utilisant le UserDefault, devrait suffire pour 80% des gens.


     


    Maintenant si tu veux une solution plus aboutie, peut être que les receipt est une possibilité? Contient-il la date d'achat de l'application? L'utilisateur peut-il supprimer son acte d'achat dans l'historique de son compte iTunes/AppStore? Quelqu'un sait-il répondre à  toutes ces questions? :-)


  • Ah, super réponse pleine d'intérêts. Merci.

    Mais c'est quoi les receipts ?
  • Si les keychains c'est plus bon, on fait comment, alors ?
  • ifouifou Membre

    Alors, je ne suis pas un expert, mais en gros, de ce que je comprends, le receipt est le fichier qui liste les achats que l'utilisateur a fait dans ton application. Ce fichier permets de restorer les achats de ton utilisateur lorsqu'il change d'iPhone/iPad. Ou quand il a supprimer ton application (localement) de son iPhone/iPad. C'est en tout cas ce que j'en ai compris.


     


    Ma supposition c'est ce que ce fichier Receipt existe même si aucun n'achat in-app ont été fait. Ma question est: ce fichier contient-il une information qui te permets de connaitre la date d'achat de l'application. Je ne connais pas la réponse à  toutes ces suppositions/questions. Il faut aller voir dans la doc d'Apple pour cela. :-)


  • HorusHorus Membre

    Hum, le plus sécurisant serait l'utilisation d'un serveur pour le stockage de data, mais si nous oublions cette idée, peut être que l'idée de ifou pourrait être la bonne.


     


    Je n'ai pas tout lu mais ça pourrait marcher, car même si l'utilisateur supprime les "documents, datas" de l'app sur iCloud  les "NSUbiquitousKeyValueStore" sont encore conservés ! 


     


    https://developer.apple.com/documentation/foundation/nsubiquitouskeyvaluestore


  • ifouifou Membre

    @horus59153: En fait je pensais plutôt à  utiliser le "In-App Purchase". Qui apparemment fait partie du StoreKit.


    Cependant, comme je le disais précédemment, encore faudrait-il que le receipt contienne la date de téléchargement de l'application. J'ai parcouru rapidement la doc, et je n'ai pas trouvé mention de cela. Maintenant je suis passé très vite. Je n'ai pas l'intention de me taper toutes la doc maintenant. Peut être une autre fois.  :P


     


    J'en suis à  deux doigts de conclure que la méthode de horus59153 est probablement la meilleure.


  • Je ne touche pas à  iCloud ni à  IOS. Mais que se passe-t-il si le user un peu malin se déconnecte du réseau et supprime le fichier receipt ? J'ai utilisé deux ans une appli essayable pendant un mois en me déconnectant du réseau et en changeant la date courante ! Pour ma part, je suis convaincu que, en paraphrasant Jules Vernes, tout ce que vous imaginez, d'autres pourront passer par dessus ! J'espère quand même que vous trouverez une solution suffisamment sécuritaire.


  • Bonjour, et merci à  tous pour vos réponses qui m'ont bien aidé pour mes recherches.


     


    J'ai donc résolu le problème en mélangeant un peu plusieurs technos, et en posant bien l'algo qui suit le comportement du user.


     


    Pour stocker 3 choses : app déjà  installée ou pas, date première installation, app déjà  achetée ou pas.



    UserDefaults.standard

    Puis pour les cas où le user jette l'app lorsqu'elle devient payante (21 jours),



    KeyChain

    Je donne ici un lien où une class keychain est donnée cadeau


     


    Merci encore.


     


    Si qq a besoin de code, qu'il ne se gène pas...


Connectez-vous ou Inscrivez-vous pour répondre.