iPhone acquisto in-app: Come posso rilevare le transazioni non finiti utilizzando storekit?
-
13-09-2019 - |
Domanda
Sono attuazione acquisto in-app in un'applicazione per iPhone che consente il download di una quantità non trascurabile di dati.
In questo momento, sto cercando di capire se il kit negozio mi può dire se ci sono operazioni in cui l'acquisto è completo, ma che sono stati interrotti dalla chiusura dell'applicazione.
Per quanto ne so l'unico modo per farlo è di aggiungere un osservatore al SKPaymentQueue:
[[SKPaymentQueue defaultQueue] addTransactionObserver:someObject];
e attendere che il defaultQueue chiamare
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
sul someObject. Gli elementi che si trovano nello stato interrotto sopra mostrate nella matrice transazioni SKPaymentTransactionStatePurchased quando questo metodo è
Il mio primo tentativo di risolvere questo problema è stato quello di aggiungere il mio osservatore e poi chiedere:
[SKPaymentQueue defaultQueue].transactions
e controllare quelli. Questo presunto restituisce un array di transazioni 'in sospeso', ma nella mia esperienza non comprende le operazioni che sono SKPaymentTransactionStatePurchased.
speravo di utilizzare lo storekit per mantenere questo stato e mi piacerebbe tutte le idee. Grazie.
Soluzione
ho deciso che era impossibile fare questo kit negozio utilizzando solo così ho fatto un piccolo tavolo in SQLite:
create table purchased_products (
product_identifier text primary key, -- apple store id string
purchased integer not null -- 1 if purchased
);
e quando ricevo il callback SKPaymentQueue che indica che un prodotto è stato acquistato aggiungo una riga a questa tabella.
Si sta lavorando bene.