React-native-iap: Se llama a purchaseUpdatedListener varias veces, a veces más de 20 veces

Creado en 8 sept. 2020  ·  12Comentarios  ·  Fuente: dooboolab/react-native-iap

Versión de react-native-iap

"react-native-iap": "^ 4.5.3"

Versión de react-native

"react-native": "0.62.0"

Plataformas a las que se enfrentó el error (¿IOS o Android o ambos?)

iOS (aún no lo he probado en Android)

Comportamiento esperado

purchaseUpdatedListener solo se debe llamar tantas veces como se haya montado el componente

Comportamiento real

Se llamó a purchaseUpdatedListener 20 veces en un par de segundos, de vez en cuando, cuando abro la aplicación, se llama varias veces

Entorno probado (¿Emulador? ¿Dispositivo real?)

Dispositivo real, entorno sandbox

Pasos para reproducir el comportamiento

Siga las instrucciones de la página principal

Actualmente tengo purchaseUpdatedListener adjunto a un oyente en componentDidMount (), a veces, cuando abro mi aplicación, se disparará varias veces. Esto está sucediendo en txns a los que llamé finishTransaction. ¿Alguien está viendo algo como esto?

🕵️‍♂️ need more investigation 🙏 help wanted 🤖 android

Comentario más útil

Igual que aquí. En cada evento de renovación automática, recibo la suscripción real de renovación automática y unos segundos después recibo una gran parte de 135 objetos de compra de purchaseUpdatedListener . Siento que este es mi historial completo de compras. Intenté llamar tanto a finishTransaction como a finishTransactionIOS para consumir las transacciones, pero no cambia nada.

En el próximo evento de renovación automática, esa gran cantidad de transacciones aumentará (136, 137, ...). Las transacciones son solo mis suscripciones de renovación automática. Ninguno de mis productos consumibles / no consumibles aparece en la lista.

Todos 12 comentarios

Lo mismo para mí, pero llamo al flujo de compra en acción

const { productId } = args
purchaseUpdatedListener(async (purchase) => {
    if (!purchase.transactionReceipt) {
        Alert("Error")
    }
    ...
})
purchaseErrorListener(error => {
    ...
})
await requestPurchase(productId, false)

Tengo 4 productos de prueba y recibo purchaseUpdatedListener 4 veces, pero la compra se solicitó solo para uno de ellos

Intenté finalizar esas transacciones pero aún así varias llamadas

¿El artículo se renueva automáticamente? Creo que lo que está sucediendo es que porque está en la caja de arena, el período de renovación es de solo 5 minutos para mi suscripción mensual. Entonces, Apple enviará un evento en cada renovación, por lo que si la aplicación se cerró durante 10 minutos, recibiré 2 notificaciones cuando se abra la aplicación.

¿Alguien puede confirmar que este es el comportamiento esperado para recibir notificaciones sobre una renovación automática y no solo sobre la compra?

Mi compra es consumible por única vez

Igual que aquí. En cada evento de renovación automática, recibo la suscripción real de renovación automática y unos segundos después recibo una gran parte de 135 objetos de compra de purchaseUpdatedListener . Siento que este es mi historial completo de compras. Intenté llamar tanto a finishTransaction como a finishTransactionIOS para consumir las transacciones, pero no cambia nada.

En el próximo evento de renovación automática, esa gran cantidad de transacciones aumentará (136, 137, ...). Las transacciones son solo mis suscripciones de renovación automática. Ninguno de mis productos consumibles / no consumibles aparece en la lista.

Lo mismo aquí, confirmo que llama al oyente la misma cantidad de veces que el número de compras en el historial de compras.

Tengo algunos problemas. Solo ocurre cuando la suscripción está habilitada.

Tuve una experiencia similar con iOS 14.

Mi aplicación vende una suscripción de renovación automática.
Creo que este problema se ha producido desde que volví a comprar la misma suscripción.

El siguiente enlace puede ser relevante para este problema.
https://developer.apple.com/forums/thread/659529

echa un vistazo a esta publicación
el problema es finishTransaction y finishTransactionIOS no funcionan para iOS ahora, estos siempre regresan indefinidos, por lo que no puede finalizar la transacción y se atascan en una transacción pendiente. Cuando abres tu aplicación, TODAS las transacciones pendientes se manejarán en purchaseUpdatedListener ... por eso tienes más de 20 veces.
: (((alguien arregle esto plsssssss

echa un vistazo a esta publicación
el problema es finishTransaction y finishTransactionIOS no funcionan para iOS ahora, estos siempre regresan indefinidos, por lo que no puede finalizar la transacción y se atascan en una transacción pendiente. Cuando abres tu aplicación, TODAS las transacciones pendientes se manejarán en purchaseUpdatedListener ... por eso tienes más de 20 veces.
: (((alguien arregle esto plsssssss

https://github.com/dooboolab/react-native-iap/issues/1160#issuecomment -716525603
He publicado una respuesta aquí y, de hecho, se espera que finishTransaction no resuelva la promesa.
Necesitamos verificar que realmente finalice la transacción colocando el registro en el lado iOS y verificar si ingresa una declaración if .

Veo lo mismo que se menciona aquí: https://github.com/dooboolab/react-native-iap/issues/1172#issuecomment -721676878.

¿Fue útil esta página
0 / 5 - 0 calificaciones