"react-native-iap": "^2.0.3",
iOS
Faz uma compra
const compra = espera RNIap.buyProductWithoutFinishTransaction (productId)
const {transactionReceipt, purchaseToken} = compra
sendToServer (transactionReceipt, {
onSuccess: () => {
RNIap.finishTransaction ()
RNIap.consumeAllItems ()
}})
Diálogo: “Esta compra dentro do aplicativo já foi comprada”. Isso está acontecendo apenas para um SKU, outros estão funcionando bem. Acho que o aplicativo está em um estado ruim e não vejo uma maneira de corrigi-lo. Eu cansei de chamar finishTransaction
e consumeAllItems
na inicialização, mas isso não resolveu. Posso comprar outros SKUs várias vezes sem problemas. Nada é retornado para getPurchaseHistory
.
Dispositivo (sandbox)
Não tenho certeza.
@siderakis Sim, estranho. Eu já corrigi esse problema como informado no stackoverflow, mas ainda ocorre em alguns dispositivos. Também estou disposto a consertar isso. Qual dispositivo você está usando?
@siderakis Isso pode resolver seu aplicativo em mau estado, eu acho. Você poderia tentar?
Eu tentei e não funcionou. Eu também reinstalei o aplicativo e isso não ajudou. Ele está sendo executado em um iPad.
Eu defino um ponto de interrupção e parece que currentQueue.transactions está vazio
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>
Talvez eu tenha ligado muito cedo
Chamei o código mais tarde na execução do programa e ele corrigiu o problema.
@siderakis Desculpe por incomodar. Mas, qual código você chamou?
O array transactions
é uma propriedade, não um método, que não está em nosso código.
Você quis dizer finishTransaction
?
Eu estava chamando esse código nativo.
Quando o chamei em didFinishLaunchingWithOptions
currentQueue.transactions estava vazio, mas chamá-lo em applicationDidBecomeActive funcionou.
Funcionou:
- (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];
}];
}
Não sei como, mas talvez possamos expor essa funcionalidade na biblioteca?
@siderakis Sim. Isso é o que eu quis dizer na edição # 259.
Acho que a ação pode estar em qualquer lugar após applicationDidBecomeActive.
Então, vou expor esse método ao lado do JS, que o usuário pode chamá-lo a qualquer momento.
Obrigado pelo seu conselho.
@JJMoon , tenho o mesmo problema, quando podemos esperar uma resolução para expor um método como você mencionou acima. Obrigado.
@sivrihuseyin O problema é bem conhecido agora. Faremos o patch neste fim de semana. Obrigado a todos os emissores.
Lançamos a solução esperada em 2.2.0
. Você poderia seguir o readme e tentar esta linha de códigos?
Olá Hyo Chan,
Obrigado pela informação.
Instalei a versão 2.2.0 e tentei o código. Infelizmente, o
o problema ainda não foi corrigido. acho que a função * clearTransaction * não
foram exportados. No ambiente reactNative não há clearTransaction
função dentro do RNIap.
Verifiquei o arquivo index.d.ts e não consegui ver a função como
clearTransaction neste. Arquivo.
Atenciosamente,
Huseyin
No domingo, 16 de setembro de 2018 às 14h25 Hyo Chan Jang [email protected]
escreveu:
Fechado # 257 https://github.com/dooboolab/react-native-iap/issues/257
via a5f225d
https://github.com/dooboolab/react-native-iap/commit/a5f225d470af0a85417325d24357667e54aa7078
.-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/dooboolab/react-native-iap/issues/257#event-1848183078 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AiH7bOp96EzsoX82UVxKHK2LkN7PNWVAks5ubjUogaJpZM4WmG_0
.
Olá Hyo Chan,
Lamento pela informação errada. ESTÁ CORRIGIDO. Não tem problema
mais.
Obrigado por sua resposta rápida e ótima solução.
Atenciosamente,
Huseyin
Domingo, 16 de setembro de 2018 às 14h56 Huseyin Sivri [email protected]
escreveu:
Olá Hyo Chan,
Obrigado pela informação.
Instalei a versão 2.2.0 e tentei o código. Infelizmente, o
o problema ainda não foi corrigido. acho que a função * clearTransaction * tem
não foi exportado. No ambiente reactNative não há clearTransaction
função dentro do RNIap.Verifiquei o arquivo index.d.ts e não consegui ver a função como
clearTransaction neste. Arquivo.Atenciosamente,
Huseyin
No domingo, 16 de setembro de 2018 às 14h25 Hyo Chan Jang [email protected]
escreveu:Fechado # 257 https://github.com/dooboolab/react-native-iap/issues/257
via a5f225d
https://github.com/dooboolab/react-native-iap/commit/a5f225d470af0a85417325d24357667e54aa7078
.-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/dooboolab/react-native-iap/issues/257#event-1848183078 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AiH7bOp96EzsoX82UVxKHK2LkN7PNWVAks5ubjUogaJpZM4WmG_0
.
Foi corrigido com a versão 2.2.0 aplicando a função clearTransaction. Obrigado
@JJMoon
Para Googlers futuros que farão upgrade da v2 para v3-5, achei isso útil
Comentários muito úteis
Eu estava chamando esse código nativo.
Quando o chamei em
didFinishLaunchingWithOptions
currentQueue.transactions estava vazio, mas chamá-lo em applicationDidBecomeActive funcionou.Funcionou:
Não sei como, mas talvez possamos expor essa funcionalidade na biblioteca?