La alerta "Ya está todo listo" no se muestra cuando se realiza una compra por segunda vez

Resuelto Vincent Garcia asked hace 7 meses • 0 respuestas

Estoy agregando compras dentro de la aplicación en mi aplicación usando el nuevo ProductView. La primera vez que intenté comprar mi producto, recibí una alerta que decía "Ya está todo listo". Pero cuando compré mi producto por segunda vez, la alerta no apareció. El producto es un consumible. ¿Por qué no aparece esa alerta? ¿Qué me estoy perdiendo?

ProductView(id: productId)
    .productViewStyle(.compact)
    .onInAppPurchaseStart { product in
        logger.log("User has started buying \(product.id)")
    }
    .onInAppPurchaseCompletion { product, result in
        if case .success(.success(let transaction)) = result {
            logger.log("Success")
        } else {
            logger.log("Failure")
        }
    }
Vincent Garcia avatar Feb 16 '24 22:02 Vincent Garcia
Aceptado

El siguiente código "funciona" de manera que cada vez que compro el mismo producto, la transacción se completa y aparece el esperado mensaje de alerta de confirmación "Ya está todo listo":

ProductView(id: productId)
    .productViewStyle(.compact)
    .onInAppPurchaseStart { product in
        logger.log("User has started buying \(product.id)")
    }
    .onInAppPurchaseCompletion { product, result in
        switch result {

        case .success(let purchaseResult):
            switch purchaseResult {
            case .success(let verificationResult):
                switch verificationResult {
                case .verified(let transaction):
                    // Do something
                    await transaction.finish()
                case .unverified(let transaction, let verificationError):
                    // Do something
                }
            case .pending:
                // Do something
            case .userCancelled:
                // Do something
            @unknown default:
                // Do something
                break
            }

        case .failure(let error):
            // Do something
        }
    }

Los diferentes marcadores de posición deben reemplazarse con código real.

Vincent Garcia avatar Feb 17 '2024 14:02 Vincent Garcia