React-native-iap: Compra en la aplicación en expo

Creado en 31 may. 2018  ·  38Comentarios  ·  Fuente: dooboolab/react-native-iap

Hola,

Estamos usando Expo para crear nuestro proyecto. En nuestro proyecto, un tema importante es la compra desde la aplicación. Usted me podría ayudar
cómo implementar la compra en la aplicación usando expo y cuáles son los pasos necesarios que debemos seguir para implementar esto.

❓ question 🚶🏻 stale

Comentario más útil

Simplemente:

  • crear una nueva sucursal detached
  • ejecutar exp detach
  • haz las mismas cosas que harías normalmente
  • volver a master para agregar el código js
  • al codificar en master envuelva el código de su módulo IAP con lo siguiente:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • De esta manera, su código no fallará al llamar a métodos IAP
  • Al implementar o probar IAP, use la rama separada, o simplemente omita las ramas por completo y vuélvase deshonesto> :)

La idea general aquí es que exp detach solo muestra una carpeta /ios & /android para que pueda usar su proyecto como una aplicación RN.
Aún obtendrá toda la funcionalidad de una aplicación Expo normal, solo use Fastlane para implementar, de modo que no necesite usar demasiado material nativo.
Finalmente, las ramas son útiles para actualizar las versiones del SDK. Si por alguna razón tiene un problema al actualizar, puede desconectarlo nuevamente y agregar esta biblioteca una vez más.

Todos 38 comentarios

Simplemente:

  • crear una nueva sucursal detached
  • ejecutar exp detach
  • haz las mismas cosas que harías normalmente
  • volver a master para agregar el código js
  • al codificar en master envuelva el código de su módulo IAP con lo siguiente:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • De esta manera, su código no fallará al llamar a métodos IAP
  • Al implementar o probar IAP, use la rama separada, o simplemente omita las ramas por completo y vuélvase deshonesto> :)

La idea general aquí es que exp detach solo muestra una carpeta /ios & /android para que pueda usar su proyecto como una aplicación RN.
Aún obtendrá toda la funcionalidad de una aplicación Expo normal, solo use Fastlane para implementar, de modo que no necesite usar demasiado material nativo.
Finalmente, las ramas son útiles para actualizar las versiones del SDK. Si por alguna razón tiene un problema al actualizar, puede desconectarlo nuevamente y agregar esta biblioteca una vez más.

La pregunta es por qué empezaría con Expo en primer lugar.

@ImArtur

Al menos para mí, es mucho más fácil trabajar con el entorno de desarrollo de la Expo que tener que crear compilaciones nativas. Además, tener un servicio gratuito de notificaciones push multiplataforma con una interfaz única también es muy conveniente.

@KevinColemanInc Sí. Lo entiendo porque antes he sido un gran usuario de expo. Realmente quiero que expo integre el módulo iap . Sin embargo, entiendo que no es fácil para la exposición mantener su entorno, incluida la función iap . Apple rechazará la aplicación Expo Client en la tienda de aplicaciones en primer lugar.

@dooboolab

Como otros han propuesto, sería genial si simplemente fuera eliminado para probarlo. Me gusta la expo por la experiencia de desarrollo.

Estoy considerando dividirlo en su propia rama en git y mantener amigable la exposición de la rama de desarrollo. Una vez que llegue el momento de la implementación, podría fusionar el código expulsado, probarlo y luego implementar la aplicación.

@ImArtur la pregunta es "Compra en la aplicación en la expo". Puede leer sobre los pros y los contras de Expo aquí: https://docs.expo.io/versions/latest/introduction/why-not-expo

@EvanBacon

¡Hola y gracias por este artículo! Me pregunto si (después de separar) se supone que debe continuar compilando con exp, o con xcode, en la rama "separada". ¡Gracias!

@EvanBacon también, ¿cómo estás probando esto en iOS? ¿Empuja una nueva compilación y luego la prueba allí o hay alguna manera de probar iaps localmente antes?

Si sé que necesitaré compras integradas en la aplicación en algún momento del desarrollo, ¿debería seguir usando CRNA? o ir directamente a RN native desde el principio?

A menos que, por supuesto, los desarrolladores de expo implementen la compra dentro de la aplicación de expo muy pronto.

@edoantonioco Lo

Pido disculpas por la demora. Cuando desconecta, agrega código nativo y lo construye en su dispositivo. Luego usa esa compilación como el cliente expo (excepto solo para su aplicación singular). Aún así, recomendaría seguir con Expo. Expo mantiene CRNA y nuestro enfoque es principalmente hacer que las bibliotecas funcionen en ese entorno. Vanilla React Native requerirá una gran cantidad de configuración innecesaria y requerirá que sepa mucho más sobre el funcionamiento interno de los módulos.

Hola, ahora que mencionas el tema. Si las compras en la aplicación es algo "difícil" de manejar por Expo. ¿Cuáles son las hojas de ruta sugeridas para monetizar una aplicación sin separarla de Expo, ya que para mí, como muchos otros, utilizo Expo por el hecho de que la experiencia general es mucho más amigable que RN y mucho menos compleja que la de ser nativa en ambas plataformas? . Entonces, ¿puede usar un plan de suscripción con PayPal o recibir pagos a través de tarjetas de crédito? ¿Google y Apple permiten que se integre dentro de su aplicación Expo mediante el uso de una vista web, por ejemplo? Gracias.

@inglesuniversal

Si vale la pena, terminamos abandonando la exposición porque nos cansamos de esperar a que se resuelvan problemas como este.

Definitivamente agrega fricción a las pruebas y al soporte de algunas funciones (como notificaciones), pero al menos mi desarrollador puede dejar de decirme, "eso es imposible porque expo no lo admite".

Expo ha anunciado esto recientemente sobre el plan futuro en 2019. Podrá vincular native modules entonces.

He estado tratando de hacer que el código de @EvanBacon anterior funcione, pero mi NativeModules está vacío y, como resultado, RNIapModule no está definido. (en iOS al menos)

¿Otros han encontrado este problema? ¿Significa esto que no estoy vinculado correctamente?

FWIW, el enlace nativo de reacción parece haber 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 

pero sospecho que es posible que deba vincular manualmente, lo que hasta ahora no he podido hacer. No puedo encontrar una carpeta de bibliotecas.
https://forums.expo.io/t/trouble-linking-with-expokit-unable-to-find-libraries-in-xcode/16710

@EvanBacon Hola señor,
¿Me puede decir los detalles?
Probé RN iap lo vinculé
entonces exp separado.
luego voy a ios dir y ejecuto pod install ahora está instalando todo
¿Qué debería hacer después?
Gracias

@cellis, ¿ puede decirme más cómo hizo que la aplicación inapp funcione? Estoy probando durante 1 semana. ¿Puede mostrar el código, por favor?
Gracias
y ¿lo construiste con expo o xcode después de la instalación de pod?
Gracias

haz las mismas cosas que harías normalmente
volver al maestro para agregar código js
al codificar en maestro, envuelva el código de su módulo IAP con lo siguiente:
@EvanBacon ¿cuál es el significado de las líneas anteriores?

Simplemente:

  • crear una nueva sucursal detached
  • ejecutar exp detach
  • haz las mismas cosas que harías normalmente
  • volver a master para agregar el código js
  • al codificar en master envuelva el código de su módulo IAP con lo siguiente:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • De esta manera, su código no fallará al llamar a métodos IAP
  • Al implementar o probar IAP, use la rama separada, o simplemente omita las ramas por completo y vuélvase deshonesto> :)

La idea general aquí es que exp detach solo muestra una carpeta /ios & /android para que pueda usar su proyecto como una aplicación RN.
Aún obtendrá toda la funcionalidad de una aplicación Expo normal, solo use Fastlane para implementar, de modo que no necesite usar demasiado material nativo.
Finalmente, las ramas son útiles para actualizar las versiones del SDK. Si por alguna razón tiene un problema al actualizar, puede desconectarlo nuevamente y agregar esta biblioteca una vez más.

Hola Evan,
Gracias por la sugerencia. He seguido los consejos y no tengo errores (he vinculado react-native-iap manualmente). Sin embargo, la función hasIAP devuelve falso aunque RNIap.initConnection (); devuelve verdadero. Lo pruebo con este simple código.

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);
    }
}

¿Sabes cuál podría ser el problema? (O cualquiera que lea esto)

De acuerdo con los documentos, https://docs.expo.io/versions/v32.0.0/sdk/payments/ , ¿ha configurado los pagos en su dispositivo? (el simulador no tendría sentido para probar esto)

Al igual que un usuario anterior en esta publicación, la mejor intención de Expo para este primer trimestre es implementar una forma de crear aplicaciones y también poder importar bibliotecas nativas React Native. En este momento muestra una Beta al iniciar un nuevo proyecto con la CLI. Espero que esto se solucione pronto.

Hola, parece que no ha habido actividad sobre este tema recientemente. ¿Se ha solucionado el problema o aún requiere la atención de la comunidad? Este problema puede cerrarse si no se produce más actividad. También puede etiquetar este problema como "Para discusión" o "Buen primer número" y lo dejaré abierto. Gracias por sus aportaciones.

Manténgalo abierto y ayúdenos a encontrar una manera de hacerlo realidad a partir de la versión 33.0 de Expo SDK

¿Alguien tiene alguna actualización sobre este tema?

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

Actualización: Lo siento, me perdí lo siguiente:

Actualmente, este módulo solo está disponible en el flujo de trabajo básico.

@kkarkos Al usar el módulo de compra en la aplicación de Expo, aún tendría que expulsar su aplicación de Expo (en el futuro previsible), por lo que realmente no resuelve el problema.

Si alguien puede dar una guía más completa sobre cómo engañar a @EvanBacon que nos describe, por favor comparta. ¿Quizás incluso una aplicación de demostración?

@TheInternet Me encuentro con el mismo problema con la carpeta "Bibliotecas" que falta. ¿Descubrió cómo instalar esto correctamente en iOS?

@inglesuniversal
Soy interesante, ¿ha encontrado formas interesantes de monetizar una aplicación sin separarla de la exposición?

¿Podemos utilizar pagos electrónicos con webView? Es legal

Hasta donde yo sé, puede usar soluciones de terceros como una aplicación web (como stripe o PayPal) pero dentro de la AppStore o PlayStore no puede. De lo contrario, su aplicación puede ser eliminada o eliminada hasta que lo haga de la manera correcta a través de la API que todos hemos estado esperando desde que comencé a usar Expo.

Puede usar Stripe o Paypal en su aplicación siempre que esté comprando bienes y servicios externos (como cuando compra un producto en Amazon o paga en la aplicación Uber), pero no puede usar Stripe para desbloquear funciones de software de la aplicación (como vender fichas de juegos o funciones premium)

Gracias KevinColemanInc por el comentario ... ¿Sabe si vende membresías o pagos recurrentes por alquiler de películas, almacenamiento en la nube, cursos en línea ... Se puede pagar externamente usando Stripe o PayPal dentro de una aplicación -> (PlayStore o AppStore) ? ¡Gracias por tus comentarios!

@inglesuniversal

Si desea desbloquear funciones o funciones dentro de su aplicación (por ejemplo: suscripciones, monedas del juego, niveles de juego, acceso a contenido premium o desbloquear una versión completa)

Estas son las pautas de Apple:
https://developer.apple.com/app-store/review/guidelines/#in -app-purchase

Creo que la mayor parte de lo que describiste se incluiría en "contenido premium". Netflix debe pagar el impuesto a las

Parece que Dropbox también paga el impuesto a las manzanas si te registras en un dispositivo móvil. Revisaría la aplicación de Udemy para ver si también usan IAP.

Hola, parece que no ha habido actividad sobre este tema recientemente. ¿Se ha solucionado el problema o aún requiere la atención de la comunidad? Este problema puede cerrarse si no se produce más actividad. También puede etiquetar este problema como "Para discusión" o "Buen primer número" y lo dejaré abierto. Gracias por sus aportaciones.

Simplemente:

  • crear una nueva sucursal detached
  • ejecutar exp detach
  • haz las mismas cosas que harías normalmente
  • volver a master para agregar el código js
  • al codificar en master envuelva el código de su módulo IAP con lo siguiente:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • De esta manera, su código no fallará al llamar a métodos IAP
  • Al implementar o probar IAP, use la rama separada, o simplemente omita las ramas por completo y vuélvase deshonesto> :)

La idea general aquí es que exp detach solo muestra una carpeta /ios & /android para que pueda usar su proyecto como una aplicación RN.
Aún obtendrá toda la funcionalidad de una aplicación Expo normal, solo use Fastlane para implementar, de modo que no necesite usar demasiado material nativo.
Finalmente, las ramas son útiles para actualizar las versiones del SDK. Si por alguna razón tiene un problema al actualizar, puede desconectarlo nuevamente y agregar esta biblioteca una vez más.

Lamento ser tan denso, pero ¿significa esto que agrega el código IAP a cada sucursal por separado (si tiene que 'envolverlo' para la sucursal de expo) y luego volver a expulsarlo en una nueva sucursal cada vez que haya agregado expo al maestro o ¿está fusionando ramas en algún momento? ¿Y sigue siendo esta la mejor manera de agregar IAP a una aplicación de exposición administrada? Estoy terminando mi primera gran aplicación y necesito agregar esta funcionalidad de alguna manera y hacerlo en una sucursal parece una buena opción segura, ¡solo quiero asegurarme de entender el flujo de trabajo! ¡También tengo que decir que me encanta expo! Ha sido una manera brillante de reaccionar de forma nativa y sin ella nunca hubiera llegado tan lejos así que gracias y sigan con el buen trabajo !!!

Hola, parece que no ha habido actividad sobre este tema recientemente. ¿Se ha solucionado el problema o aún requiere la atención de la comunidad? Este problema puede cerrarse si no se produce más actividad. También puede etiquetar este problema como "Para discusión" o "Buen primer número" y lo dejaré abierto. Gracias por sus aportaciones.

Cerrando este problema después de un período prolongado de inactividad. Si este problema todavía está presente en la última versión, no dude en crear un nuevo problema con información actualizada.

Simplemente:

  • crear una nueva sucursal detached
  • ejecutar exp detach
  • haz las mismas cosas que harías normalmente
  • volver a master para agregar el código js
  • al codificar en master envuelva el código de su módulo IAP con lo siguiente:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • De esta manera, su código no fallará al llamar a métodos IAP
  • Al implementar o probar IAP, use la rama separada, o simplemente omita las ramas por completo y vuélvase deshonesto> :)

La idea general aquí es que exp detach solo muestra una carpeta /ios & /android para que pueda usar su proyecto como una aplicación RN.
Aún obtendrá toda la funcionalidad de una aplicación Expo normal, solo use Fastlane para implementar, de modo que no necesite usar demasiado material nativo.
Finalmente, las ramas son útiles para actualizar las versiones del SDK. Si por alguna razón tiene un problema al actualizar, puede desconectarlo nuevamente y agregar esta biblioteca una vez más.

Lamento ser tan denso, pero ¿significa esto que agrega el código IAP a cada sucursal por separado (si tiene que 'envolverlo' para la sucursal de expo) y luego volver a expulsarlo en una nueva sucursal cada vez que haya agregado expo al maestro o ¿está fusionando ramas en algún momento? ¿Y sigue siendo esta la mejor manera de agregar IAP a una aplicación de exposición administrada? Estoy terminando mi primera gran aplicación y necesito agregar esta funcionalidad de alguna manera y hacerlo en una sucursal parece una buena opción segura, ¡solo quiero asegurarme de entender el flujo de trabajo! ¡También tengo que decir que me encanta expo! Ha sido una manera brillante de reaccionar de forma nativa y sin ella nunca hubiera llegado tan lejos así que gracias y sigan con el buen trabajo !!!

¡Hola! ¿Encontraste la respuesta? ¿Cómo lo implementaste?

¿Fue útil esta página
0 / 5 - 0 calificaciones