creo que su problema tiene que ver con las cuentas de usuario recinto de seguridad en iTunes Connect. Si usted no tiene ningún usuario de recinto de seguridad, esta guía fue muy útil para que hagan configuración:
https://support.magplus.com/hc/en-us/articles/203809008-iOS-How-to-Test-In-App-Purchases-in-Your-App
Si tiene Sandbox Usuarios:
Puede intentar llamar finishTransaction:
Sin embargo, es necesario asegurarse de que el SKPaymentTransactionState
de la transacción es aceptable.
por la documentación sobre finishTransaction
:
// Asynchronous.
// Remove a finished (i.e. failed or completed) transaction from the queue.
// Attempting to finish a purchasing transaction will throw an exception.
Así que para eliminar de forma segura las transacciones completadas:
for transaction in SKPaymentQueue.default().transactions {
guard
transaction.transactionState != .purchasing,
transaction.transactionState != .deferred
else {
//Optionally provide user feedback for pending or processing transactions
return
}
//Transaction can now be safely finished
SKPaymentQueue.default().finishTransaction(transaction)
}
La documentación sobre .purchasing
y .deferred
es bastante vaga:
case purchasing // Transaction is being added to the server queue.
case deferred // The transaction is in the queue, but its final status is pending external action.
Por lo Entiendo, manejo las transacciones pendientes y/o de procesamiento deben ser bastante pasivas. La aplicación ha hecho todo lo necesario y está esperando una respuesta del servidor de iTunes Store o alguna otra dependencia (es decir, autorización de pago).
paymentQueue: updatedTransactions:
recibirán una llamada en la cola SKPaymentTransactionObserver
cuando se actualice la transacción.
En cuanto a cómo su cola de transacciones quedó atascada en el limbo, estoy dispuesto a apostar que todas las transacciones en su cola se encuentran en el estado .purchasing
. Es muy probable que se trate de un error en los usuarios de iTunes Connect/Sandbox/Production iTunes Accounts. Otros, incluido yo mismo, hemos tenido este problema también. Hay un informe de error archivado. Intente volver a crear/cambiar la contraseña de su usuario de sandbox o cree un nuevo usuario de Sandbox para probar.
Más información aquí: https://forums.developer.apple.com/thread/70418
Podría sugerir lo que sería una buena aplicación práctica? –
@ZivLevy Acabo de registrar todas las transacciones en 'transacciones', así que me hice saber que fueron eliminadas. – DDPWNAGE