Aller au contenu


Photo

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

keychain achat intégré userDefaults

  • Please log in to reply
9 réponses à ce sujet

#1 busterTheo

busterTheo

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 588 messages

Posté 09 juin 2017 - 16:48

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 :


#2 Lexxis

Lexxis

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 404 messages

Posté 09 juin 2017 - 17:41

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.



#3 ifou

ifou

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 43 messages
  • LocationParis

Posté 09 juin 2017 - 17:48

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? :-)



#4 busterTheo

busterTheo

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 588 messages

Posté 09 juin 2017 - 17:53

Ah, super réponse pleine d'intérêts. Merci.
Mais c'est quoi les receipts ?

#5 busterTheo

busterTheo

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 588 messages

Posté 09 juin 2017 - 17:55

Si les keychains c'est plus bon, on fait comment, alors ?

#6 ifou

ifou

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 43 messages
  • LocationParis

Posté 09 juin 2017 - 18:30

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. :-)



#7 Horus

Horus

    Cueilleur de cabosses

  • Membre
  • PipPipPip
  • 172 messages
  • LocationLille

Posté 10 juin 2017 - 21:11

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.ap...uskeyvaluestore


Horus,


#8 ifou

ifou

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 43 messages
  • LocationParis

Posté 10 juin 2017 - 21:42

@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.



#9 tablier

tablier

    Brasseur de pâte à cacao

  • Membre
  • PipPipPipPipPipPipPip
  • 3 090 messages
  • LocationGrenoble et Méaudre (Isère)

Posté 10 juin 2017 - 21:45

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.


"Pourquoi répéter les erreurs passées, lorsqu'il y a tellement de nouvelles erreurs à commettre?" (Bertrand Russel)

J'ai mal à ma France !
mon site: http://cocoa.pod.free.fr


#10 busterTheo

busterTheo

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 588 messages

Posté 15 juin 2017 - 16:46

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...







Also tagged with one or more of these keywords: keychain, achat intégré, userDefaults

0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)