"react-native-iap": "^2.0.3",
iOS
Hace una compra
compra constante = espera RNIap.buyProductWithoutFinishTransaction (productId)
const {transactionReceipt, purchaseToken} = compra
sendToServer (transactionReceipt, {
onSuccess: () => {
RNIap.finishTransaction ()
RNIap.consumeAllItems ()
}})
Cuadro de diálogo: "Esta compra desde la aplicación ya se ha comprado". Esto solo sucede para un SKU, otros funcionan bien. Creo que la aplicación se puso en mal estado y no veo la forma de solucionarlo. Me cansé de llamar a finishTransaction
y consumeAllItems
en la inicialización, pero eso no lo solucionó. Otros SKU que puedo comprar varias veces sin problema. No se devuelve nada por getPurchaseHistory
.
Dispositivo (caja de arena)
No estoy seguro.
@siderakis Sí, extraño. Ya he solucionado este problema como se dijo en stackoverflow, pero todavía ocurre en algunos dispositivos. Yo también estoy dispuesto a arreglar esto. Qué dispositivo estás usando?
@siderakis Supongo que esto podría resolver tu aplicación en mal estado. ¿Podrías intentarlo?
Lo probé y no funcionó. También reinstalé la aplicación y eso no ayudó. Se ejecuta en un iPad.
Establecí un punto de interrupción y parece que currentQueue.transactions está vacío
De SKPaymentQueue.h
// Array of unfinished SKPaymentTransactions. Only valid while the queue has observers. Updated asynchronously.
@property(nonatomic, readonly) NSArray<SKPaymentTransaction *> *transactions NS_AVAILABLE_IOS(3_0);
<strong i="6">@end</strong>
Tal vez lo llamé demasiado pronto
Llamé al código más tarde en la ejecución del programa y solucionó el problema.
@siderakis Perdón por molestarme. Pero, ¿a qué código llamaste?
La matriz transactions
es una propiedad, no un método, que no está en nuestro código.
¿Quiso decir finishTransaction
?
Estaba llamando a este código nativo.
Cuando lo llamé en didFinishLaunchingWithOptions
currentQueue.transactions estaba vacío, pero llamarlo en applicationDidBecomeActive funcionó.
Esto funcionó:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// take current payment queue
SKPaymentQueue* currentQueue = [SKPaymentQueue defaultQueue];
[currentQueue restoreCompletedTransactions];
// finish ALL transactions in queue
// [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
[currentQueue.transactions enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[currentQueue finishTransaction:(SKPaymentTransaction *)obj];
}];
}
No estoy seguro de cómo, pero tal vez podamos exponer esta funcionalidad en la biblioteca.
@siderakis Sí. Eso es lo que quise decir en el número 259.
Creo que la acción puede estar en cualquier lugar después de applicationDidBecomeActive.
Entonces, expondré ese método al lado de JS, ese usuario puede llamarlo en cualquier momento.
Gracias por tu consejo.
@JJMoon , tengo el mismo problema, ¿cuándo podemos esperar una resolución para exponer un método como mencionaste anteriormente? Gracias.
@sivrihuseyin El problema es bien conocido ahora. Haremos el parche este fin de semana. Gracias a todos los emisores.
Lanzamos la solución esperada en 2.2.0
. ¿Podrías seguir el archivo Léame y probar esta línea de códigos?
Hola Hyo Chan,
Gracias por la información.
Instalé la versión 2.2.0 y probé el código. Desafortunadamente, el
el problema aún no se ha solucionado. creo que la función, * clearTransaction * no tiene
ha sido exportado. En el entorno reactNative no hay una transacción clara
función dentro de RNIap.
Revisé el archivo index.d.ts y no pude ver la función como
clearTransaction en esto. expediente.
Saludos cordiales,
Huseyin
El domingo, 16 de septiembre de 2018 a las 2:25 p.m. Hyo Chan Jang [email protected]
escribió:
Cerrado # 257 https://github.com/dooboolab/react-native-iap/issues/257
a través de a5f225d
https://github.com/dooboolab/react-native-iap/commit/a5f225d470af0a85417325d24357667e54aa7078
.-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/dooboolab/react-native-iap/issues/257#event-1848183078 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AiH7bOp96EzsoX82UVxKHK2LkN7PNWVAks5ubjUogaJpZM4WmG_0
.
Hola Hyo Chan,
Lamento la información incorrecta. ESTÁ ARREGLADO. No hay ningún problema
nunca más.
Gracias por su pronta respuesta y excelente solución.
Saludos cordiales,
Huseyin
El domingo, 16 de septiembre de 2018 a las 2:56 p.m. Huseyin Sivri [email protected]
escribió:
Hola Hyo Chan,
Gracias por la información.
Instalé la versión 2.2.0 y probé el código. Desafortunadamente, el
el problema aún no se ha solucionado. creo que la función, * clearTransaction * tiene
no ha sido exportado. En el entorno reactNative no hay una transacción clara
función dentro de RNIap.Revisé el archivo index.d.ts y no pude ver la función como
clearTransaction en esto. expediente.Saludos cordiales,
Huseyin
El domingo, 16 de septiembre de 2018 a las 2:25 p.m. Hyo Chan Jang [email protected]
escribió:Cerrado # 257 https://github.com/dooboolab/react-native-iap/issues/257
a través de a5f225d
https://github.com/dooboolab/react-native-iap/commit/a5f225d470af0a85417325d24357667e54aa7078
.-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/dooboolab/react-native-iap/issues/257#event-1848183078 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AiH7bOp96EzsoX82UVxKHK2LkN7PNWVAks5ubjUogaJpZM4WmG_0
.
Se corrige con la versión 2.2.0 aplicando la función clearTransaction. Gracias
@JJMoon
Para futuros empleados de Google que actualicen de v2 a v3-5, esto me resultó útil
Comentario más útil
Estaba llamando a este código nativo.
Cuando lo llamé en
didFinishLaunchingWithOptions
currentQueue.transactions estaba vacío, pero llamarlo en applicationDidBecomeActive funcionó.Esto funcionó:
No estoy seguro de cómo, pero tal vez podamos exponer esta funcionalidad en la biblioteca.