Gestión avanzada de transacciones en el SDK de iOS
La gestión avanzada de transacciones está disponible en el SDK de Adapty para iOS a partir de la versión 3.12.
La gestión avanzada de transacciones en Adapty te da mayor control sobre cómo se procesan, verifican y finalizan las transacciones.
Esta funcionalidad introduce tres características opcionales que trabajan en conjunto:
| Característica | Propósito |
|---|---|
appAccountToken | Vincula las transacciones de Apple con tu ID de usuario interno |
jwsTransaction | Proporciona el payload de transacción firmado por Apple para validación |
| Finalización manual | Permite finalizar transacciones solo después de que tu backend confirme el éxito |
En conjunto, estas herramientas te permiten construir flujos de validación personalizados robustos mientras Adapty sigue sincronizando las transacciones con su backend.
La mayoría de las apps no necesitan esto.
Por defecto, Adapty valida y finaliza automáticamente las transacciones de StoreKit.
Usa esta guía solo si ejecutas tu propia validación en el backend o quieres controlar por completo el ciclo de vida de las compras.
Asignar appAccountToken
appAccountToken es un UUID que te permite vincular las transacciones de la App Store con la identidad interna de tus usuarios.
StoreKit asocia este token con cada transacción, de modo que tu backend puede relacionar los datos de la App Store con tus usuarios.
Usa un UUID estable generado por usuario y reutilízalo para la misma cuenta en todos los dispositivos. Esto garantiza que las compras y las notificaciones de la App Store queden correctamente vinculadas.
Puedes establecer el token de dos formas: durante la activación del SDK o al identificar al usuario.
Siempre debes pasar appAccountToken junto con customerUserId.
Si solo pasas el token, no se incluirá en la transacción.
Acceder a la representación JWS
Al realizar una compra, el resultado incluye la transacción de Apple en formato JWS Compact Serialization. Puedes reenviar este valor a tu backend para validación independiente o registro.
let result = try await Adapty.makePurchase(product: paywallProduct)
let jwsRepresentation = result.jwsTransaction
Controlar el comportamiento de finalización de transacciones
Por defecto, Adapty finaliza automáticamente las transacciones de StoreKit tras la validación. Si necesitas retrasar la finalización hasta que tu backend confirme el éxito, establece el comportamiento de finalización en manual.
En este modo:
- Adapty sigue validando las compras y sincronizándolas con su backend.
- Las transacciones permanecen sin finalizar hasta que llames explícitamente a
finish().
var configBuilder = AdaptyConfiguration
.builder(withAPIKey: "YOUR_API_KEY")
.with(transactionFinishBehavior: .manual)
try await Adapty.activate(with: configBuilder.build())
Al usar la finalización manual de transacciones, necesitas implementar el método delegado onUnfinishedTransaction para gestionar las transacciones sin finalizar:
extension YourApp: AdaptyDelegate {
func onUnfinishedTransaction(_ transaction: AdaptyUnfinishedTransaction) async {
// Perform your custom validation logic here
// When ready, finish the transaction
await transaction.finish()
}
}
Para obtener todas las transacciones sin finalizar actuales, usa el método getUnfinishedTransactions():
let unfinishedTransactions = try await Adapty.getUnfinishedTransactions()