L'idea è se pioggia o sole, bagnato o fine, l'utente deve ottenere che ha pagato per tutto.Ripristino transazioni di acquisto in-app
da Apple:
Store Kit provides built-in functionality to restore transactions for non-consumable products, auto-renewable subscriptions and free subscriptions
Per tali operazioni Kit di Apple Store ha buoni strumenti build-in. Voglio concentrarmi su altri tipi (consumabili in particolare). Una sola e unica informazione di transazione è un identificativo e un dato di ricevuta che riceviamo da Store Kit dopo l'acquisto con successo. La nostra applicazione utilizza un modello lato server per fornire prodotti. Tuttavia, vi sono ancora molti casi di perdita dei dati di acquisto, ad esempio se il server si blocca mentre l'utente effettua l'acquisto tramite App Store, quindi non è possibile inviare la ricevuta al server per completare il processo di verifica.
soluzione attuale è:
- Server restituisce un elenco di identificatori di prodotto
- utente seleziona uno; app salva il suo identificativo sul dispositivo (tramite SQLite o Core Data). Il processo di transazione Apple Store standart subito dopo.
- In caso di successo, l'applicazione salva i dati di ricevimento unitamente all'identificatore sul dispositivo e li invia al server. Se ci sono stati errori o cancellazioni, l'identificatore viene rimosso immediatamente dal dispositivo.
- Se la risposta del server è OK, l'app rimuove l'identificatore con i dati di ricevuta dal dispositivo. Altrimenti invierà periodicamente richieste al server fino a quando si verifica una risposta positiva.
Ma questo approccio ha ancora delle perdite. Ad esempio, l'utente può rimuovere l'applicazione dal dispositivo in attesa della consegna della transazione al server, quindi non ci sarà alcuna prova del suo acquisto.
I vostri suggerimenti?
Che cosa significa "Si noti che la ricevuta di acquisto errata è valida solo non buona"? – Danik
Volevo solo dire che finisci Transazione: quando la ricevuta è cattiva ma non consegni il prodotto. È inoltre necessario registrare qualcosa sul server e avvisare l'utente. In realtà ho impostato le mie cose per consegnare il prodotto, laddove possibile, finché non sono stato sicuro di aver riscontrato eventuali errori nella verifica della ricevuta. Penso che abbia funzionato su Amazon ma non su Apple o Google. Almeno su Amazon, mi ha salvato dal mio stesso bug. – DrC
In ogni caso, è necessario salvare nell'elenco la chiave che hai menzionato sopra per evitare che il contenuto si esaurisca. Ad esempio, l'app non ha ricevuto la risposta e l'utente spegne il dispositivo.All'avvio dell'app, Store Kit invia nuovamente la richiesta, ma l'app non ha informazioni sulla transazione per quel momento. Possiamo identificare la transazione con la chiave e il suo identificatore e inviarla al server. Al termine della verifica, il server termina le chiamate all'appTransaction :. Se viene rilevata una falsificazione, il server può informare l'app di interrompere le richieste per questa transazione. Inoltre, è utile limitare le richieste per evitare l'onere del server dovuto alle transazioni sospese. – Lion