4.4.8
0,61,5
iOS
await RNIap.requestPurchase(sku, false)
console.log('REQUEST OVER')
REQUEST OVER para ser impresso.
No dispositivo eu uso a conta do testador sandbox, está respondendo e funcionando bem. Mas com qualquer outro dispositivo ou simulador não está respondendo ou resolvendo. Isso é vital, pois durante a revisão do aplicativo, a Apple continua rejeitando meu aplicativo com o motivo de tocar em COMPRAR não está respondendo.
Não há problema com RNIap.getProducts(itemSkus)
Dispositivo real e simulador
async componentDidMount() {
RNIap.getProducts(itemSkus)
.then((products) => {
this.setState({ products: products })
})
.catch((error) => {
console.log(error.message)
})
}
requestPurchase = async (sku) => {
try {
await RNIap.requestPurchase(sku, false)
console.log('REQUESTED OVER')
} catch (err) {
console.warn(err.code, err.message)
}
}
render() {
const { products } = this.state
return (
<View>
{products.map((p, i) => { return (
<TouchableWithoutFeedback onPress={() => this.requestPurchase(p.productId)}>
<Text> BUY </Text>
</TouchableWithoutFeedback> ) })}
</View>)
Mesmo aqui, no entanto, parece funcionar no Android.
Eu posso ter corrigido adicionando
const resultado = await RNIap.initConnection();
aguardar RNIap.consumeAllItemsAndroid();
console.log('resultado', resultado);
No início de componentDidMount ;
Deixe-me saber se isso ajuda
@hyochan Você encontrou uma solução para isso? Também estou enfrentando o mesmo problema no iOS. É extremamente frustrante e não consigo passar da revisão do aplicativo porque chamar RNIap.requestPurchase não responde com o alerta promovendo o usuário a concordar com os termos da assinatura ou confirmando que a assinatura já está ativa. Se eu forçar o fechamento do aplicativo e tentar novamente, às vezes funciona. Não sei se há um problema com o sandbox ou esta biblioteca.
@smarttouchtechnology Você ligou initConnection
? Isso é necessário a partir de 4.4.5
.
Pode ser difícil para @smarttouchtechnology ler a resposta abaixo que "resolve" o "problema" ;)
Eu tive o mesmo problema e a sugestão do @Panda313 para adicionar await RNIap.initConnection()
em componentDidMount
funcionou.
Pena que isso não está melhor documentado...
@Panda313 ... Você acabou de me salvar uma noite sem dormir de uma semana de rejeição de maçã
Alguém poderia adicionar isso à documentação para que mais pessoas não se deparem com esse problema? Não tenho certeza da melhor maneira de adicioná-lo.
EDIT: Adicionado aqui. #1088.
Sinta-se à vontade para revisar (não tenho certeza de que fiz certo.)
Eu posso ter corrigido adicionando
const resultado = await RNIap.initConnection();
aguardar RNIap.consumeAllItemsAndroid();
console.log('resultado', resultado);No início de componentDidMount ;
Deixe-me saber se isso ajuda
Para iOS, não tive nenhuma resposta de requestSubscription
. Eu tentei adicionar await RNIap.initConnection();
na frente de RNIap.requestSubscription
e funcionou para mim. Agora estou recebendo objetos de compra em listeners na raiz do app. E também avança mais abaixo no código depois de resolver com erro ou com resposta bem-sucedida.
Olá, parece que não houve nenhuma atividade sobre este problema recentemente. O problema foi corrigido ou ainda requer a atenção da comunidade? Esse problema pode ser encerrado se nenhuma outra atividade ocorrer. Você também pode rotular esta questão como "Para discussão" ou "Boa primeira edição" e eu a deixarei em aberto. Obrigado por suas contribuições.
Fechando este problema após um período prolongado de inatividade. Se esse problema ainda estiver presente na versão mais recente, sinta-se à vontade para criar um novo problema com informações atualizadas.
Comentários muito úteis
Eu tive o mesmo problema e a sugestão do @Panda313 para adicionar
await RNIap.initConnection()
emcomponentDidMount
funcionou.Pena que isso não está melhor documentado...