ios - una - que aplicaciones son gratis para iphone
Aplicaciones de compra en la aplicaciĆ³n iOS Inicia sesiĆ³n dos veces (2)
En su teléfono, intente ir a Configuración / iTunes y App Store y cierre la sesión en el ID de Apple existente que se especifica allí. Vuelve a tu aplicación y vuelve a intentarlo.
Estoy agregando compras en la aplicación a una de mis aplicaciones. Según sea necesario, he agregado un botón para permitir que los usuarios vuelvan a descargar los artículos comprados. Aquí está el método IBAction para eso:
- (IBAction)touchedButtonUnlockAgain:(id)sender {
[self.activityIndicator startAnimating];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}
Cuando toco este botón, aparece el cuadro de inicio de sesión estándar. Ingreso mi nombre de usuario y contraseña de Sandbox (correctamente, verificado). Después de que el cuadro de inicio de sesión desaparece, reaparece medio segundo después. Entonces, vuelvo a iniciar sesión con el mismo nombre de usuario y contraseña (correctamente, verificado) y ENTONCES las compras se vuelven a descargar. He verificado que sucede en el simulador y en un dispositivo (iOS 6.0 en ambos casos).
¿Por qué me piden mi nombre de usuario / contraseña dos veces?
La única razón para esto serán las transacciones sin terminar, los fantasmas que esperan su llamada finalización de transacción para el canje. Pueden existir debido a transacciones iniciadas por el usuario que no pueden finalizarse, o simplemente debido a la finalización brusca de la aplicación antes de que puedan finalizar. Básicamente, las llamadas no balanceadas a addPayment
/ restoreCompletedTransactions
y finishTransaction
pueden causarlas.
Verifique a sus delegados: paymentQueue:RestoreCompletedTransactionsFinished:
& paymentQueue:restoreCompletedTransactionsFailedWithError:
¿Estás haciendo algo dos veces? ¿Recibes algún error?
Una cosa más que debe verificar es: ¿Cuándo en su ciclo de vida de la aplicación llama a la siguiente declaración?
[[SKPaymentQueue defaultQueue] addTransactionObserver]
Es importante llamar a esta persona tan pronto como sea posible, porque a veces las transacciones perdidas que se vuelven fantasmas debido a la finalización de la aplicación vuelven a aparecer, y se espera que finalicen. Sin un observador activo, no llegan al método updatedTransactions, que es su puerta de enlace final para finishTransaction
llamada finishTransaction
.