2011-02-08 1 views
5

Ho impostato gli acquisti in-app in modo che quando un utente fa clic sul pulsante di acquisto, venga visualizzata una vista "Please Wait" e aggiunge un pagamento alla coda di pagamento. Ciò causa sempre un richiamo immediato dell'osservatore della coda che dice che la transazione è entrata nello stato "Acquisti".SKPaymentTransactionObserver non riceve una richiamata sullo switch app

Il mio problema si verifica quando l'utente torna alla schermata principale prima che venga visualizzata la finestra di dialogo conferma acquisto, quindi annulla. Se aspetto un attimo sulla schermata principale per un po 'di tempo prima di tornare all'applicazione, l'applicazione non riceve mai alcuna richiamata sullo stato di cambio di transazione o sulla rimozione. Se esamino la coda di pagamento, posso vedere che la transazione è ancora in coda, sempre nello stato "Acquisti". C'è qualcosa che posso fare per farlo richiamare e rimuoverlo dalla coda dopo aver ripreso l'applicazione?

+0

hanno lo stesso problema ... hai trovato un modo per risolverlo? – nico

risposta

5

Se ho capito la tua situazione in modo corretto, hai incontrato questo problema:

In App Purchase user cancels tx while app in background: tx state stays on purchasing

Questo sembra essere un bug nel kit di Store di Apple. Il problema può essere facilmente riprodotto se si invia l'app allo sfondo subito dopo l'avvio di un acquisto e quindi premendo il pulsante Annulla quando viene richiesto il popup di conferma acquisto. La tua app non riceverà mai la notifica della transazione non riuscita (annullata) e entrerà in uno stato bloccato (se hai disabilitato l'interfaccia utente cercando di impedire all'utente di interagire con l'app fino al termine dell'acquisto).

Dobbiamo aspettare una correzione da parte di Apple. Nel frattempo, se la tua app sta entrando in uno stato bloccato perché disabiliti l'interfaccia utente mentre effettui un acquisto; dovresti implementare un meccanismo per consentire all'utente di lasciare quello stato.

Buona fortuna!

+0

Bene, grazie. Almeno non sono l'unico. –

0

Ho lo stesso problema, tuttavia, sono riuscito a riprodurlo solo quando si utilizza un account sandstore appstore.

Qualcuno è riuscito a riprodurlo utilizzando un account Apple reale?

Non ho ancora provato questo, ma sto pensando di rimuovere il mio SKPaymentTransactionObserver nel momento in cui l'app perde l'attenzione, e aggiungendolo di nuovo quando diventa attivo.

La cosa strana di questo bug è che si trovi in ​​difficoltà con una transazione in stato di acquisto, ma quando si correttamente l'arresto l'applicazione e il riavvio che ci si aspetterebbe tale operazione nello stato di acquisto di essere ancora lì, però non lo è ... Come se la nuova aggiunta di SKPaymentTransactionObserver l'avesse attivata per rivalutare correttamente il suo stato.