2011-11-29 10 views
5

Non riesco a ricevere alcuna transazione nel mio metodo delegato paymentQueue:updatedTransactions:. Solo il metodo delegato paymentQueueRestoreCompletedTransactionsFinished: viene colpito dal debugger. Quando provo a recuperare l'array di transazioni, ottengo un array vuoto.SKPaymentQueue restoreCompletedTransactions: nessuna transazione ripristinata

Prima di tutto, compro un prodotto non rinnovabile. Dopo averlo acquistato e verificato con successo dal server, verrà rimosso dalla coda di pagamento. All'avvio, chiamo il metodo paymentqueues restoreCompletedTransactions. Come previsto, Storekit mi chiede la password (dall'utente sandbox) che inserisco. Ma il metodo di aggiornamento non verrà preso in considerazione. Solo il metodo di finitura viene catturato e, come descritto, le transazioni sono vuote.

Cosa sto sbagliando? È colpa mia, o è mele restoreCompletedTransactions broken??

Grazie e BR Nic

+0

Se sono corretto, è necessario tenere traccia delle ricevute delle transazioni sul proprio server. – JoePasq

+0

lo faccio. Tuttavia, ogni volta che chiamo il metodo restoreCompletedTransactions, è necessario ripristinare tutti gli acquisti (quindi la Guida di programmazione acquisti in-app) – NicTesla

+1

I materiali di consumo non devono essere ripristinati, sono monouso. Provalo con un non consumabile. – JoePasq

risposta

3

dispiace per aver lasciato attendere per tanto tempo!

Il problema è che nelle mele In-App Purchase Programming Guide si dice chiaramente che non posso accettare il rinnovo degli abbonamenti. Dovrò memorizzare gli acquisti da solo e implementare una propria funzionalità di ripristino.

Quello che ho fatto è stato includere alcuni identificatori nel nome del prodotto, che mi dica, che tipo di prodotto è. (Il suo unico metodo per memorizzare le informazioni del prodotto senza utilizzare il mio server) Quindi il nome dei miei prodotti è ad es. com.mycompany.iphone.non_renewing_30d (Questo prodotto è realmente configurato come prodotto non rinnovabile)

Così, quando l'utente effettua un acquisto, memorizzo queste informazioni nel Database CoreData di iDevice. Includo anche la mia funzionalità di scadenza, perché ho la data di acquisto e la data di scadenza dei prodotti (30d).

Quando scade il tempo, l'utente visualizza una finestra di dialogo che indica di effettuare un nuovo acquisto. Non mi piace davvero l'implementazione delle mele di abbonamenti non rinnovati perché dice all'utente che ha già acquistato il prodotto e chiede loro di riacquistare, ma ho dovuto occuparmene.

Suggerisco davvero di memorizzare le informazioni di acquisto sul dispositivo iOS, perché non è necessario creare la propria funzionalità di riconoscimento utente (ad esempio un indirizzo utente o indirizzo email), poiché Apple ha disattivato l'unicità dell'UDID.

+0

Ma quando l'utente disinstalla l'app, perde l'acquisto. C'è un modo per aggirare questo? – JDx

+1

Quello è corretto! Devi salvarlo sul tuo server. Per memorizzare i dati per un utente specifico, è inoltre necessario creare il proprio account/sistema di accesso. BR – NicTesla

Problemi correlati