Condividi tramite


Acquisto di prodotti non di consumo in Xamarin.iOS

I prodotti non di consumo sono di proprietà del cliente. L'aspettativa è che avranno sempre accesso a loro, anche se il dispositivo viene smarrito/rubato o ne acquista uno nuovo. Sono utili per libri, problemi di rivista, livelli di gioco, filtri fotografici, "pro-features" e così via. Una volta che un utente ha acquistato un prodotto non di consumo, non deve mai pagare di nuovo. Se il codice consente accidentalmente di provare, StoreKit visualizzerà un messaggio che indica che è già stato acquistato.

Esempio di prodotti non di consumo

L'esempio contiene un progetto denominato NonConsumables. L'esempio di codice illustra come implementare prodotti non di consumo usando filtri foto come esempio. Dopo aver acquistato un filtro, puoi applicarlo alla foto più e più volte. Non è mai necessario ri-acquistare.

Il processo di acquisto viene visualizzato in questa serie di screenshot: il pulsante Acquista diventa il pulsante di attivazione delle funzionalità:

Il processo di acquisto è illustrato in questa serie di screenshot

Il processo di acquisto è lo stesso di un prodotto di consumo; la differenza principale consiste nel modo in cui l'acquisto viene monitorato nel codice dell'applicazione. In questo esempio il pulsante Acquista è disponibile solo se il prodotto non è già stato acquistato, altrimenti il pulsante attiva la funzionalità stessa.

Il diagramma seguente illustra le interazioni tra le classi e il server di App Store per eseguire un acquisto di prodotti non di consumo:

Le interazioni tra le classi e il server dell'App Store per eseguire un acquisto di prodotto non di consumo

La differenza principale dell'esempio Di consumo è che una volta completato l'acquisto, l'interfaccia utente viene aggiornata per impedire il nuovo acquisto. In questo esempio, la notifica di una transazione riuscita aggiorna l'interfaccia utente in modo che il pulsante Acquista venga convertito in un pulsante che attiva la funzionalità stessa.

Ri-acquisto di prodotti non di consumo

Il codice dovrebbe in genere nascondere o riutilizzare un pulsante di acquisto dopo che il prodotto è stato acquistato correttamente, per impedire all'utente di tentare di acquistare di nuovo il prodotto. L'applicazione di esempio esegue questa operazione modificando il pulsante Acquista nel pulsante che rende funzionante il filtro fotografico di esempio.

Ci sono situazioni in cui un'applicazione non è in grado di indicare se un prodotto non di consumo è già stato acquistato:

  • Se un'applicazione viene eliminata e riinstallata in un dispositivo, tutti i record di acquisto verranno eliminati (a meno che/fino a quando l'utente non esegue un ripristino di backup).
  • Se l'utente ha installato l'applicazione in due o più dispositivi e effettua un acquisto su uno dei dispositivi. Gli altri dispositivi continueranno a mostrare il prodotto disponibile per l'acquisto.
  • Se un cliente tenta di acquistare di nuovo un prodotto non di consumo in queste situazioni, l'App Store esebiterà nuovamente il prodotto senza alcun addebito. L'interfaccia utente apparirà inizialmente per eseguire un acquisto (ad esempio, viene visualizzato un avviso di conferma e sarà necessario l'ID Apple), tuttavia l'utente visualizzerà un messaggio che informa che il prodotto è già stato acquistato.

Il percorso del codice in questo scenario è esattamente lo stesso di un acquisto normale, le uniche differenze sono:

  • L'utente non riceve alcun nuovo addebito per il prodotto.
  • L'oggetto SKPaymentTransaction passato all'applicazione avrà una OriginalTransaction proprietà che fa riferimento alla transazione generata al momento dell'acquisto iniziale del prodotto.
  • Le applicazioni che vendono prodotti non di consumo devono implementare anche la funzionalità di ripristino di StoreKit per aiutare gli utenti a recuperare gli acquisti esistenti.