React-native-iap: iOS 14: getProducts () Erro desconhecido (RN 0.62.2 - 0.63)

Criado em 18 set. 2020  ·  50Comentários  ·  Fonte: dooboolab/react-native-iap

RNIap.getProducts () parece estar quebrado na versão mais recente do React Native, retornando apenas um erro desconhecido.

Versão do react-native-iap

4.6.1

Versão do react-native

0,63,0

Plataformas em que você enfrentou o erro (IOS ou Android ou ambos?)

iOS

Comportamento esperado

produtos a serem buscados.

Comportamento real

erro desconhecido sendo retornado

Ambiente testado (emulador? Dispositivo real?)

simulador iOS

Passos para reproduzir o comportamento

Basta chamar RNIap.getProducts () ou RNIap.getSubscriptions ().

📱 iOS 🙏 help wanted

Comentários muito úteis

Todos 50 comentários

Também estou experimentando isso com simuladores iOS executando iOS 14.0, mas não estou tendo problemas com outras versões de simuladores (especificamente, iOS 13.5).

Este parece ser um problema no lado da Apple com o simulador iOS 14.0: https://developer.apple.com/forums/thread/125164

Esse link foi encontrado em: https://github.com/dooboolab/react-native-iap/issues/1091

Obrigado @joeyscarim. Já entrei em contato com a Apple e aguardo o feedback deles.

@rossbulat mesmo problema no iOS 14 ...
react -native-iap - v4.6.1
Xcode - v12

YellowBox.js:71 Possible Unhandled Promise Rejection (id: 0): Error: UNKNOWN_ERROR Error: UNKNOWN_ERROR at Object.fn [as getItems] (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:2165:36) at http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:179261:33 at step (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:178999:21) at Object.next (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:178929:16) at http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:178901:69 at tryCallTwo (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:3277:7) at doResolve (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:3441:15) at new Promise (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:3300:5) at __awaiter (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:178880:12) at ios (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:179258:16)

Oi pessoal,

Também estamos experimentando isso. Após a atualização para a v4.6.1, quase sempre experimentamos o "erro desconhecido" também.

Screenshot 2020-09-23 at 09 53 25

Ei pessoal,
Acho que encontrei a solução para o nosso problema. Você tem que ter certeza de que initConnection está rodando.
No meu exemplo, acabei de colocar requestPurchase/requestSubscription dentro de initConnection . Antes estava funcionando sem ele, agora é obrigatório.

@Hellhiem Tenho initConnection e ainda estou recebendo o erro.

Executar a função a seguir verifica se o erro ainda está lá com initConnection ()

  const getProducts = async () => {
      try {
        await RNIap.initConnection();
        const products: RNIap.Product[] = await RNIap.getProducts(IAP_SKUS);
      } catch (err) {
        console.log(err);
      }
  }

@rossbulat o que acontece quando você tenta isso:

const getProducts = async () => {
    return RNIap.initConnection().then(() => {
      try {
        const products: RNIap.Product[] = RNIap.getProducts(IAP_SKUS);

        return products;
      } catch (err) {
        console.log(err);
      }
    });
  };

Fiz a mesma coisa, mas dentro de then coloquei requestPurchase/requestSubscription

@Hellhiem Ainda obtendo um erro desconhecido! (este é o mesmo que o meu código, mas usando then em vez da sintaxe async / await).

Dei uma olhada nas APIs de módulo nativo, a função getItems() parece ser o ponto de falha. É possível para um dos desenvolvedores principais verificar se essa chamada de API nativa está funcionando conforme o esperado no iOS 14?

@Hellhiem Eu tentei seu código, ainda obtendo o mesmo Erro Desconhecido.

A engenharia da Apple está analisando o caso por meio do Assistente de Feedback. Vou atualizar este tópico à medida que determinarmos qual é o problema.

Estou tendo esse problema no simulador iOS executando iOS 14.0

O mesmo problema. O simulador IOS 14 com xcode 12 não pode buscar produtos e lançar um erro desconhecido

O mesmo problema.

O mesmo problema para o dispositivo real durante a revisão da apple

Tenho o mesmo problema, mas com a função getSubscriptions

Fiz alguns testes e, para mim, [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers] só retorna vazio ...

o mesmo problema

Tem o mesmo problema com getSubscriptions no lado do IOS, UNKNOWN_ERROR foi lançado, Xcode 12.0, react-native 0.62.2

@rossbulat alguma sorte? Estou tendo o mesmo problema também

@rossbulat alguma sorte? Estou tendo o mesmo problema também

Você está usando um dispositivo ou simulador?

Olá desenvolvedores, resolvi isso. Eu fiz o seguinte

  1. Garanti que aceito todos os termos e condições dos acordos do usuário, certificando-me de que o status está ativo
  2. Garanti que o ID do produto / assinatura na seção de compras no aplicativo do seu aplicativo esteja marcado como pronto para envio

PS: Meu teste foi em um dispositivo local

O problema está apenas no simulador iOS 14. Dispositivos reais funcionam.

A Apple ficou quieta na última semana, nenhuma atualização foi compartilhada comigo.

Para o simulador, você deve adicionar o arquivo de configuração StoreKit ao projeto e selecioná-lo no esquema Executar. Mas eu tive este erro no dispositivo

O problema está apenas no simulador iOS 14. Dispositivos reais funcionam.

A Apple ficou quieta na última semana, nenhuma atualização foi compartilhada comigo.

Provavelmente, o teste em compras de aplicativos agora está restrito a dispositivos reais, porque não consigo encontrar a opção de adicionar um testador sandbox no simulador iOS

O problema está apenas no simulador iOS 14. Dispositivos reais funcionam.

A Apple ficou quieta na última semana, nenhuma atualização foi compartilhada comigo.

Provavelmente, o teste em compras de aplicativos agora está restrito a dispositivos reais, porque não consigo encontrar a opção de adicionar um testador sandbox no simulador iOS

É gerenciado pelo arquivo de configuração do storekit

@ilyasbat Eu segui essas instruções, recompus , mas infelizmente ainda estou recebendo o erro.

Resolvi pela configuração do strorekit.
https://stackoverflow.com/questions/58020258/requesting-an-in-app-purchase-in-ios-13-fails/58065711#58065711

Adicionando o arquivo de configuração do storekit, recompile e agora execute no simulador IOS 14 com xcode 12. Funciona perfeitamente e posso comprar itens no simulador pela primeira vez.

@ilyasbat esta correção é segura? O que acontecerá se eu alterar minhas ofertas de produto na appstore posteriormente, por exemplo, alterar o preço - eles também serão atualizados no aplicativo ou o aplicativo ficará preso com a configuração storeConfiguration.storekit ?

@ilyasbat esta correção é segura? O que acontecerá se eu alterar minhas ofertas de produto na appstore posteriormente, por exemplo, alterar o preço - eles também serão atualizados no aplicativo ou o aplicativo ficará preso com a configuração storeConfiguration.storekit ?

Achei este artigo muito bom:
https://www.appcoda.com/storekit-testing/

Pelo que estou lendo, parece que o arquivo de configuração StoreKit é apenas para depuração / teste:

O próximo campo é o preço da compra in-app. Embora haja níveis de preços no App Store Connect, aqui podemos fornecer qualquer valor que quisermos como um texto livre. O preço é apenas para fins de teste, não se aplica às compras reais no aplicativo e, claro, não haverá cobrança. Portanto, fique à vontade para definir o preço que desejar. Para esta compra específica no aplicativo que estamos configurando aqui, o valor de 0,99 é suficiente. A moeda do preço será a moeda correspondente à localidade do Simulador ou qualquer localidade que tenha sido selecionada manualmente (falaremos sobre isso mais tarde). Portanto, 0,99 pode ser dólares, euros, ienes e assim por diante.

Não tenho certeza se isso ainda é conhecido (não vi mencionado acima): descobri que continuo recebendo Error: UNKNOWN_ERROR quando executo npx react-native run-ios partir do terminal, mas quando Eu executo o aplicativo do xcode, a compra no aplicativo (com storekit) funciona bem.

"react-native": "0.61.4",
"react-native-iap": "^4.6.3",

xcode v12
macos 10.15.7

No momento, portanto, não é possível usar o react-native-iap na produção em um dispositivo com iOS 14? Já que a única maneira de corrigir [Error: UNKNOWN_ERROR] é adicionar um arquivo Configuration.StoreKit , mas apenas para fins de teste, não para uma versão de produção?

Alguém tem outra solução?

Atualmente, uso esta biblioteca para compras no aplicativo em produção, Android e iOS (então sim iOS 14). Consegui fazer com que os usuários testassem com sucesso no TestFlight (nota: eles não podem usar o login por impressão digital, eles têm que ender a apple id e a senha sempre - o que é uma política da Apple, não uma falha desta biblioteca) e as coisas estão funcionando na produção .

Você já tentou testar seu aplicativo no TestFlight @RobinChailley ?

Eu tenho 2 dos meus dispositivos reais no IOS 14.1 trabalhando com contas sandbox novamente fazendo o seguinte.

Siga as etapas para criar a configuração do StoreKit, selecione-a no esquema Executar e, a seguir, crie para o seu dispositivo. Não tenho certeza se esta etapa é necessária, mas busque alguns produtos. Você pode fazer uma compra neste momento, mas o listener de compra irá errar, pois o transactionId das compras é "0".

Em seguida, desmarque a configuração StoreKit do esquema Executar e construa para o seu dispositivo novamente. Desta vez, quando você buscar produtos, será solicitado que você faça o login. Por algum motivo, agora consigo fazer login com minhas contas do sandbox. Não sei por quê, mas talvez apague ou redefina algo.

@karltaylor Sim, minhas compras no aplicativo apareceram durante o teste no TestFlight. Meu código é parecido com este:

try {
    IAP.initConnection()
        .then((success) => {
            if (!success) return Promise.reject("Failed to connect");

            // get products that can be purchased in iap store
            // Note: this is necessary for requestPurchase to work!
            const productIds = [PRODUCT_ID];
            return IAP.getProducts(productIds);
        })
        .then((prods) => {
            // get already-purchased items
            return getAvailablePurchases();
        })
        .then((purchases) => {
            // continue...
        })
}

Observação: meu PRODUCT_ID correspondeu ao texto na coluna "ID do produto" em _appstoreconnect -> App Store -> Gerenciar_

Qual é o "status" de suas compras no aplicativo em _appstoreconnect_?

@karltaylor Sim, minhas compras no aplicativo apareceram durante o teste no TestFlight. Meu código é parecido com este:

try {
    IAP.initConnection()
        .then((success) => {
            if (!success) return Promise.reject("Failed to connect");

            // get products that can be purchased in iap store
            // Note: this is necessary for requestPurchase to work!
            const productIds = [PRODUCT_ID];
            return IAP.getProducts(productIds);
        })
        .then((prods) => {
            // get already-purchased items
            return getAvailablePurchases();
        })
        .then((purchases) => {
            // continue...
        })
}

Observação: meu PRODUCT_ID correspondeu ao texto na coluna "ID do produto" em _appstoreconnect -> App Store -> Gerenciar_

Qual é o "status" de suas compras no aplicativo em _appstoreconnect_?

Desculpe @Beamanator, eu removi meus comentários para evitar causar mais confusão, pois era um problema com outra área.

Depois de adicionar o arquivo Configuration.storekit coloquei-os trabalhando em meu simulador e no Testflight! 👍

@rossbulat Você conseguiu encontrar uma solução para este problema? Estou tendo problemas no Android e iOS.

Não tenho certeza se isso ainda é conhecido (não vi mencionado acima): descobri que continuo recebendo Error: UNKNOWN_ERROR quando executo npx react-native run-ios partir do terminal, mas quando Eu executo o aplicativo do xcode, a compra no aplicativo (com storekit) funciona bem.

"react-native": "0.61.4",
"react-native-iap": "^4.6.3",

xcode v12
macos 10.15.7

Está bem comigo
"react-native": "0.63.2",
"react-native-iap": "^5.1.3",
xcode v12
macos 11.0.1

funcionou assim no modo de depuração, mas não no testflight. Teria uma configuração diferente?

Ainda estou recebendo o mesmo "Erro desconhecido" no iOS.

"react-native": "^0.63.4",
"react-native-iap": "^5.2.0",

Xcode 12.2

Alguma ideia de resolver este problema sem usar a configuração do StoreKit?

Ainda estou recebendo o mesmo "Erro desconhecido" no iOS.

"react-native": "^0.63.4",
"react-native-iap": "^5.2.0",

Xcode 12.2

Alguma ideia de resolver este problema sem usar a configuração do StoreKit?

Qual versão do simulador você usou?
O mesmo problema com iOS 14.2 e funciona bem com iOS 13.5

O mesmo para mim quando executado no simulador iOS 14.2 e funciona bem com o simulador iOS 13.x.

E eu tenho o mesmo problema com a equipe de validação da Apple, acho que eles estão executando meu aplicativo em um simulador ...

Descobrimos que seus produtos de compra no aplicativo exibiram um ou mais bugs quando analisados ​​no iPad executando iOS 14.0.1 em Wi-Fi.

  • Lançou o aplicativo
  • Toque em Configurações, canto superior esquerdo
  • Tocou em Remover anúncios
  • O aplicativo começou a carregar indefinidamente

Alguém aqui já tentou publicar a compra no aplicativo não consumível em produção?

O mesmo para mim quando executado no simulador iOS 14.2 e funciona bem com o simulador iOS 13.x.

E eu tenho o mesmo problema com a equipe de validação da Apple, acho que eles estão executando meu aplicativo em um simulador ...

Descobrimos que seus produtos de compra no aplicativo exibiram um ou mais bugs quando analisados ​​no iPad executando iOS 14.0.1 em Wi-Fi.

  • Lançou o aplicativo
  • Toque em Configurações, canto superior esquerdo
  • Tocou em Remover anúncios
  • O aplicativo começou a carregar indefinidamente

Alguém aqui já tentou publicar a compra no aplicativo não consumível em produção?

você também tem atrasos na aprovação de preços e a apple não aprova seu pedido porque você não pode comprar?

Fiz todos os meus testes em um dispositivo real com um usuário sandbox. Tudo funciona para comprar o produto, mas a Apple recusa minha construção por causa do erro "UNKNOW PRODUCT" no simulador (iOS 14).

Estou tentando publicar esta versão do aplicativo com uma compra in-app não consumível na App Store desde outubro ...

Fiz todos os meus testes em um dispositivo real com um usuário sandbox. Tudo funciona para comprar o produto, mas a Apple recusa minha construção por causa do erro "UNKNOW PRODUCT" no simulador (iOS 14).

Estou tentando publicar esta versão do aplicativo com uma compra in-app não consumível na App Store desde outubro ...

Dê uma olhada em nosso problema.

https://github.com/dooboolab/react-native-iap/issues/1200

Eu também passei pelo mesmo problema e meu aplicativo foi lançado após três semanas.

Fiz todos os meus testes em um dispositivo real com um usuário sandbox. Tudo funciona para comprar o produto, mas a Apple recusa minha construção por causa do erro "UNKNOW PRODUCT" no simulador (iOS 14).
Estou tentando publicar esta versão do aplicativo com uma compra in-app não consumível na App Store desde outubro ...

Dê uma olhada em nosso problema.

1200

Eu também passei pelo mesmo problema e meu aplicativo foi lançado após três semanas.

Minha build foi aceita pela Apple, muito obrigado pela ajuda !!!

eu respondi aqui

experimente em um dispositivo real

Responda

Tendo este problema também em simuladores IOS 14. Seria bom testar pagamentos sem ter que usar um dispositivo real.

Não trabalhando com este ambiente

  • Mac 11.2
  • Xcode 12.4
  • Simulador executando iOS 14 e superior

Trabalhando com este ambiente

  • Mac 11.2
  • Xcode 12.4
  • Simulador executando iOS 13.7 e inferior

No simulador iOS 14, isso está funcionando
https://stackoverflow.com/questions/58020258/requesting-an-in-app-purchase-in-ios-13-fails/58065711#58065711

Esta página foi útil?
0 / 5 - 0 avaliações