React-native-iap: Compra no aplicativo na Expo

Criado em 31 mai. 2018  ·  38Comentários  ·  Fonte: dooboolab/react-native-iap

Olá,

Estamos usando a Expo para criar nosso projeto. Em nosso projeto, um tópico importante é a compra no aplicativo. Você poderia me ajudar
como implementar a compra no aplicativo usando expo e quais são as etapas necessárias que precisamos seguir para implementar isso.

❓ question 🚶🏻 stale

Comentários muito úteis

Simplesmente:

  • crie uma nova filial detached
  • execute exp detach
  • faça todas as mesmas coisas que você faria normalmente
  • volte para master para adicionar o código js
  • ao codificar em master envolva o código do módulo IAP com o seguinte:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • Desta forma, seu código não travará ao chamar métodos IAP
  • Ao implantar ou testar o IAP, use o branch desanexado - ou simplesmente pule os branches e vá para o rogue> :)

A ideia geral aqui sendo exp detach apenas exibe uma pasta /ios & /android para que você possa usar seu projeto como um aplicativo RN.
Você ainda obterá todas as funcionalidades de um aplicativo Expo regular, basta usar o fastlane para implantar, para não precisar usar muito material nativo.
Finalmente, as ramificações são úteis para atualizar versões do SDK. Se, por algum motivo, você tiver um problema de atualização, pode simplesmente desanexar novamente e adicionar esta biblioteca mais uma vez.

Todos 38 comentários

Simplesmente:

  • crie uma nova filial detached
  • execute exp detach
  • faça todas as mesmas coisas que você faria normalmente
  • volte para master para adicionar o código js
  • ao codificar em master envolva o código do módulo IAP com o seguinte:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • Desta forma, seu código não travará ao chamar métodos IAP
  • Ao implantar ou testar o IAP, use o branch desanexado - ou simplesmente pule os branches e vá para o rogue> :)

A ideia geral aqui sendo exp detach apenas exibe uma pasta /ios & /android para que você possa usar seu projeto como um aplicativo RN.
Você ainda obterá todas as funcionalidades de um aplicativo Expo regular, basta usar o fastlane para implantar, para não precisar usar muito material nativo.
Finalmente, as ramificações são úteis para atualizar versões do SDK. Se, por algum motivo, você tiver um problema de atualização, pode simplesmente desanexar novamente e adicionar esta biblioteca mais uma vez.

A questão é por que você começaria com a Expo em primeiro lugar.

@ImArtur

Pelo menos para mim, o ambiente de desenvolvimento da Expo é muito mais fácil de trabalhar do que ter que criar compilações nativas. Além disso, ter um serviço gratuito de notificação por push em várias plataformas com uma interface única também é muito conveniente.

@KevinColemanInc Sim. Eu entendo porque eu já fui um usuário pesado da Expo. Eu realmente quero que o Expo integre o módulo iap . No entanto, eu entendo que não é fácil para o Expo manter seu ambiente incluindo o recurso iap . A Apple rejeitará o app Expo Client na app store primeiro.

@dooboolab

Como outros propuseram, eu ficaria bem se fosse apenas retirado para teste. Eu apenas gosto do Expo para a experiência de desenvolvimento.

Estou pensando em dividi-lo em seu próprio branch no git e manter a exposição do branch dev amigável. Quando chegar o momento de implantação, eu poderia mesclar o código ejetado, testá-lo e implantar o aplicativo.

@ImArtur a questão é "Compra no aplicativo na Expo". Você pode ler sobre os prós e contras da Expo aqui: https://docs.expo.io/versions/latest/introduction/why-not-expo

@EvanBacon

Olá e obrigado por este artigo! Eu estou me perguntando se (após desanexar) você deve continuar a construir com exp, ou com xcode, no branch "desanexado"? Obrigado!

@EvanBacon também, como você está testando isso no iOS? Você empurra uma nova compilação e a testa lá ou há uma maneira de testar o iaps localmente antes?

Se eu souber que precisarei de compras no aplicativo em algum ponto do desenvolvimento, ainda devo usar o CRNA? ou ir diretamente para o nativo RN desde o início?

A menos, é claro, que o expo devs implemente a compra dentro do aplicativo em breve.

@edoantonioco eu consegui isso trabalhando com a expo. Acabei de criar uma página com botões iap para comprar itens e só pressiono esses botões quando estou testando compras e compilando com Xcode. Caso contrário, eu construo com o Expo. Funciona bem!

Desculpe pelo atraso. Ao desconectar, você adiciona código nativo e o constrói em seu dispositivo. Em seguida, você usa essa construção como o cliente expo (exceto apenas para seu aplicativo singular). Eu ainda recomendaria ficar com a Expo. CRNA é mantido pela Expo e nosso foco está principalmente em fazer as bibliotecas funcionarem naquele ambiente. O Vanilla React Native exigirá muitas configurações desnecessárias e que você saiba muito mais sobre o funcionamento interno dos módulos.

Olá, agora que você tocou no assunto. Se as compras no aplicativo são meio "difíceis" para a Expo. Quais são os roteiros sugeridos para monetizar um App sem desvinculá-lo da Expo, já que para mim, como muitos outros, utilizo a Expo pelo fato de que a experiência geral é muito mais amigável do que RN e muito menos complexa do que tornar-se nativo em ambas as plataformas . Então, você pode simplesmente usar um plano de assinatura do PayPal ou receber pagamentos por meio de cartão de crédito? Isso é permitido pelo Google e pela Apple para ser integrado, dentro de seu Expo App usando uma visualização da web, por exemplo? Obrigado.

@inglesuniversal

Se vale a pena, acabamos descartando a Expo porque nos cansamos de esperar que questões como essa sejam resolvidas.

Definitivamente adiciona fricção ao teste e ao suporte de alguns recursos (como notificações), mas pelo menos meu desenvolvedor pode parar de me dizer, "isso é impossível porque o Expo não oferece suporte".

A Expo anunciou isso recentemente sobre o plano futuro em 2019. Você poderá vincular native modules então.

Tenho tentado fazer com que o código de @EvanBacon acima funcione, mas meu NativeModules está vazio e, como resultado, RNIapModule é indefinido. (pelo menos no iOS)

Outras pessoas encontraram esse problema? Isso significa que não estou vinculado corretamente?

FWIW, o link react-native parece ter funcionado ....

$ react-native link react-native-iap
rnpm-install info Linking react-native-iap ios dependency 
rnpm-install info Platform 'ios' module react-native-iap has been successfully linked 
rnpm-install info Linking react-native-iap android dependency 
rnpm-install info Platform 'android' module react-native-iap has been successfully linked 

mas suspeito que precise fazer um link manualmente, o que até agora não fui capaz de fazer. Não consigo encontrar uma pasta de bibliotecas.
https://forums.expo.io/t/trouble-linking-with-expokit-unable-to-find-libraries-in-xcode/16710

@EvanBacon Olá senhor,
Você pode me dizer em detalhes?
Eu tentei RN iap e liguei
então eu exp desanexado.
então eu vou para o diretório ios e executo pod install agora está instalando tudo
O que eu devo fazer a seguir?
obrigado

@cellis você pode me contar mais como você fez o inapp funcionar que estou tentando por 1 semana agora pode mostrar o código, por favor?
obrigado
e você construiu com expo ou xcode após a instalação do pod?
obrigado

faça todas as mesmas coisas que você faria normalmente
volte para master para adicionar código js
ao codificar em master, envolva seu código do módulo IAP com o seguinte:
@EvanBacon qual é o significado das linhas acima?

Simplesmente:

  • crie uma nova filial detached
  • execute exp detach
  • faça todas as mesmas coisas que você faria normalmente
  • volte para master para adicionar o código js
  • ao codificar em master envolva o código do módulo IAP com o seguinte:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • Desta forma, seu código não travará ao chamar métodos IAP
  • Ao implantar ou testar o IAP, use o branch desanexado - ou simplesmente pule os branches e vá para o rogue> :)

A ideia geral aqui sendo exp detach apenas exibe uma pasta /ios & /android para que você possa usar seu projeto como um aplicativo RN.
Você ainda obterá todas as funcionalidades de um aplicativo Expo regular, basta usar o fastlane para implantar, para não precisar usar muito material nativo.
Finalmente, as ramificações são úteis para atualizar versões do SDK. Se, por algum motivo, você tiver um problema de atualização, pode simplesmente desanexar novamente e adicionar esta biblioteca mais uma vez.

Oi evan,
obrigado pela sugestão. Segui o conselho e não tenho erros (vinculei o react-native-iap manualmente). No entanto, a função hasIAP está retornando falso mesmo que RNIap.initConnection (); retorna verdadeiro. Eu o testo com este código simples.

async componentDidMount() {
    try {
      const result = await RNIap.initConnection();
      console.log("hasIAP " + hasIAP())  // returns false
      console.log('result', result);   // returns true
    } catch (err) {
      console.warn(err.code, err.message);
    }
}

Você sabe qual pode ser o problema? (Ou alguém lendo isso)

De acordo com os documentos, https://docs.expo.io/versions/v32.0.0/sdk/payments/ , você configurou os pagamentos no seu dispositivo? (o simulador não faria sentido para testar isso)

Como um usuário anterior neste post, é a melhor intenção da Expo neste primeiro trimestre implementar uma maneira de construir aplicativos e também ser capaz de importar bibliotecas nativas React Native. No momento ele mostra um Beta ao iniciar um novo projeto com a CLI. Espero que isso seja corrigido em breve.

Olá, parece que não houve nenhuma atividade sobre este problema recentemente. O problema foi corrigido ou ainda requer a atenção da comunidade? Este problema pode ser resolvido se nenhuma outra atividade ocorrer. Você também pode rotular esse problema como "Para discussão" ou "Bom primeiro problema" e eu o deixarei em aberto. Obrigado por suas contribuições.

Por favor, mantenha-o aberto e ajude-nos a encontrar uma maneira de tornar isso uma realidade a partir do Expo SDK versão 33.0

Alguém tem atualizações sobre este problema?

https://docs.expo.io/versions/latest/sdk/in-app-purchases/

Atualização: Desculpe, perdi o seguinte:

Este módulo está atualmente disponível apenas no fluxo de trabalho básico.

@kkarkos Usando o próprio módulo de compra no aplicativo da Expo, você ainda terá que ejetar seu aplicativo da Expo (por um futuro previsível), então isso realmente não resolve o problema.

Se alguém puder fornecer um guia mais completo sobre como enganar a descrição de @EvanBacon , compartilhe. Talvez até um aplicativo de demonstração?

@TheInternet Estou tendo o mesmo problema com a pasta "Bibliotecas" ausente. Você descobriu como instalar isso corretamente no iOS?

@inglesuniversal
Eu sou interessante, você encontrou maneiras interessantes de monetizar um aplicativo sem separá-lo da Expo?

Podemos usar pagamentos eletrônicos com webView? Isso é legal?

Pelo que eu sei, você pode usar soluções de terceiros como um aplicativo da web (como stripe ou PayPal), mas dentro da AppStore ou PlayStore você não pode. Caso contrário, seu aplicativo pode ser chutado ou removido até que você faça isso da maneira certa por meio da API que todos esperamos desde que comecei a usar o Expo.

Você pode usar Stripe ou Paypal em seu aplicativo, desde que esteja adquirindo bens e serviços externos (como quando você compra um produto na Amazon ou paga no aplicativo Uber), mas não pode usar Stripe para desbloquear recursos de software de aplicativo (como venda de tokens de jogo ou recursos premium)

Obrigado KevinColemanInc pelo comentário ... Por acaso você sabe se está vendendo assinaturas ou pagamentos recorrentes para aluguel de filmes, armazenamento em nuvem, cursos online ... Isso pode ser pago externamente usando Stripe ou PayPal dentro de um aplicativo -> (PlayStore ou AppStore) ? Obrigado pelo seu feedback!

@inglesuniversal

Se você deseja desbloquear recursos ou funcionalidades em seu aplicativo (por exemplo: assinaturas, moedas no jogo, níveis de jogo, acesso a conteúdo premium ou desbloqueio de uma versão completa)

Estas são as diretrizes da Apple:
https://developer.apple.com/app-store/review/guidelines/#in -app-purchase

Acho que a maior parte do que você descreveu se enquadraria em "conteúdo premium". A Netflix é obrigada a pagar o imposto sobre a

Parece que o Dropbox também paga o imposto sobre a maçã se você se inscrever no celular. Gostaria de verificar o aplicativo da Udemy para ver se eles também usam IAP.

Olá, parece que não houve nenhuma atividade sobre este problema recentemente. O problema foi corrigido ou ainda requer a atenção da comunidade? Este problema pode ser resolvido se nenhuma outra atividade ocorrer. Você também pode rotular esse problema como "Para discussão" ou "Bom primeiro problema" e eu o deixarei em aberto. Obrigado por suas contribuições.

Simplesmente:

  • crie uma nova filial detached
  • execute exp detach
  • faça todas as mesmas coisas que você faria normalmente
  • volte para master para adicionar o código js
  • ao codificar em master envolva o código do módulo IAP com o seguinte:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • Desta forma, seu código não travará ao chamar métodos IAP
  • Ao implantar ou testar o IAP, use o branch desanexado - ou simplesmente pule os branches e vá para o rogue> :)

A ideia geral aqui sendo exp detach apenas exibe uma pasta /ios & /android para que você possa usar seu projeto como um aplicativo RN.
Você ainda obterá todas as funcionalidades de um aplicativo Expo regular, basta usar o fastlane para implantar, para não precisar usar muito material nativo.
Finalmente, as ramificações são úteis para atualizar versões do SDK. Se, por algum motivo, você tiver um problema de atualização, pode simplesmente desanexar novamente e adicionar esta biblioteca mais uma vez.

Desculpe ser tão denso, mas isso significa que você adiciona o código IAP a cada branch separadamente (se você tiver que 'embrulhá-lo' para o branch expo) e então apenas re-ejetar em um novo branch sempre que adicionar expo code para o master ou você está mesclando branches a qualquer momento ??! E esta ainda é a melhor maneira de adicionar IAPs a um aplicativo de expo gerenciado? Estou terminando meu primeiro grande aplicativo e preciso adicionar essa funcionalidade de alguma forma e fazê-lo em um branch talvez pareça uma boa opção segura - eu só quero ter certeza de que entendi o fluxo de trabalho! Eu também tenho que dizer que adoro a Expo! Tem sido uma maneira brilhante de reagir aos nativos e sem ela eu nunca teria chegado tão longe, então obrigado e continuem com o bom trabalho !!!

Olá, parece que não houve nenhuma atividade sobre este problema recentemente. O problema foi corrigido ou ainda requer a atenção da comunidade? Este problema pode ser resolvido se nenhuma outra atividade ocorrer. Você também pode rotular esse problema como "Para discussão" ou "Bom primeiro problema" e eu o deixarei em aberto. Obrigado por suas contribuições.

Encerrando 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.

Simplesmente:

  • crie uma nova filial detached
  • execute exp detach
  • faça todas as mesmas coisas que você faria normalmente
  • volte para master para adicionar o código js
  • ao codificar em master envolva o código do módulo IAP com o seguinte:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • Desta forma, seu código não travará ao chamar métodos IAP
  • Ao implantar ou testar o IAP, use o branch desanexado - ou simplesmente pule os branches e vá para o rogue> :)

A ideia geral aqui sendo exp detach apenas exibe uma pasta /ios & /android para que você possa usar seu projeto como um aplicativo RN.
Você ainda obterá todas as funcionalidades de um aplicativo Expo regular, basta usar o fastlane para implantar, para não precisar usar muito material nativo.
Finalmente, as ramificações são úteis para atualizar versões do SDK. Se, por algum motivo, você tiver um problema de atualização, pode simplesmente desanexar novamente e adicionar esta biblioteca mais uma vez.

Desculpe ser tão denso, mas isso significa que você adiciona o código IAP a cada branch separadamente (se você tiver que 'embrulhá-lo' para o branch expo) e então apenas re-ejetar em um novo branch sempre que adicionar expo code para o master ou você está mesclando branches a qualquer momento ??! E esta ainda é a melhor maneira de adicionar IAPs a um aplicativo de expo gerenciado? Estou terminando meu primeiro grande aplicativo e preciso adicionar essa funcionalidade de alguma forma e fazê-lo em um branch talvez pareça uma boa opção segura - eu só quero ter certeza de que entendi o fluxo de trabalho! Eu também tenho que dizer que adoro a Expo! Tem sido uma maneira brilhante de reagir aos nativos e sem ela eu nunca teria chegado tão longe, então obrigado e continuem com o bom trabalho !!!

Oi! Você encontrou a resposta? Como você o implementou?

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