Voglio dire, dovrebbero essere i miei passi?Quando devo convalidare la ricevuta della transazione di acquisto in-app?
1) Get
SKPaymentTransactionStatePurchased
2) elimina da SKPaymentQueue e di fornire il contenuto da
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
3) Convalida la ricevuta e poi, se è valido, bloccare il contenuto che ho appena fornito
O dovrei cambiare il 2 ° passaggio in 3 ° invece?
1) Get
SKPaymentTransactionStatePurchased
2) Convalida la ricevuta e poi, se è valido, dont't fornire contenuti
3) elimina da
SKPaymentQueue
comunque[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
Nel primo caso utente può spegnere Internet subito dopo l'acquisto, quindi non potrò convalidare la ricevuta. Ma nel secondo, potrebbero esserci dei problemi con Internet tra i passaggi 1 e 2, quindi non finirò la transazione e non fornirò il contenuto, sarebbe una brutta esperienza utente.
Quindi in che modo hai scelto la tua app e perché?
My Choice
ho scelto il secondo scenario, dal momento che la scelta del primo rende la mia app facilmente essere incrinata dalla IAP Cracker.
Sono anche interessante nella risposta a questo. Attualmente sto facendo il tuo primo approccio poiché è un'esperienza utente migliore ed è ancora difficile abusare (continuo a provare a convalidare la ricevuta in background) –
Ho anche deciso di sceglierne uno per la mia app –
Determinare se per scaricare il contenuto (scontrino valido) o meno (scontrino non valido) dal codice dell'app? Se è così, l'unica necessità di cambiare 'if (valido)' in 'if (1)'. Vedi la mia risposta. –