React-native-iap: Achat dans l'application à expo

Créé le 31 mai 2018  ·  38Commentaires  ·  Source: dooboolab/react-native-iap

Bonjour,

Nous utilisons Expo pour créer notre projet. Dans notre projet, un sujet important est l'achat intégré. Pourriez-vous m'aider
comment mettre en œuvre l'achat intégré à l'aide d'expo et quelles sont les étapes nécessaires à suivre pour l'implémenter.

❓ question 🚶🏻 stale

Commentaire le plus utile

Simplement:

  • créer une nouvelle branche detached
  • exécuter exp detach
  • faites tout ce que vous feriez normalement
  • revenir à master pour ajouter du code js
  • lors du codage en master enveloppez le code de votre module IAP avec ce qui suit:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • De cette façon, votre code ne plantera pas lors de l'appel des méthodes IAP
  • Lors du déploiement ou du test d'IAP, utilisez la branche détachée - ou ignorez simplement les branches et devenez voyou> :)

L'idée générale ici étant exp detach apparaître un dossier /ios & /android afin que vous puissiez utiliser votre projet comme une application RN.
Vous aurez toujours toutes les fonctionnalités d'une application Expo standard, utilisez simplement Fastlane pour déployer afin de ne pas avoir besoin d'utiliser trop d'éléments natifs.
Enfin, les branches sont utiles pour mettre à jour les versions du SDK. Si, pour une raison quelconque, vous rencontrez un problème de mise à jour, vous pouvez simplement détacher à nouveau et ajouter cette bibliothèque une fois de plus.

Tous les 38 commentaires

Simplement:

  • créer une nouvelle branche detached
  • exécuter exp detach
  • faites tout ce que vous feriez normalement
  • revenir à master pour ajouter du code js
  • lors du codage en master enveloppez le code de votre module IAP avec ce qui suit:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • De cette façon, votre code ne plantera pas lors de l'appel des méthodes IAP
  • Lors du déploiement ou du test d'IAP, utilisez la branche détachée - ou ignorez simplement les branches et devenez voyou> :)

L'idée générale ici étant exp detach apparaître un dossier /ios & /android afin que vous puissiez utiliser votre projet comme une application RN.
Vous aurez toujours toutes les fonctionnalités d'une application Expo standard, utilisez simplement Fastlane pour déployer afin de ne pas avoir besoin d'utiliser trop d'éléments natifs.
Enfin, les branches sont utiles pour mettre à jour les versions du SDK. Si, pour une raison quelconque, vous rencontrez un problème de mise à jour, vous pouvez simplement détacher à nouveau et ajouter cette bibliothèque une fois de plus.

La question est de savoir pourquoi commenceriez-vous par Expo en premier lieu.

@ImArtur

Au moins pour moi, l'environnement de développement d'Expo est beaucoup plus facile à utiliser que de devoir créer des versions natives. En outre, avoir un service de notification push multi-plateforme gratuit avec une interface unique est également très pratique.

@KevinColemanInc Oui. Je comprends parce que j'ai été un grand utilisateur d'expo plus tôt. Je veux vraiment qu'expo intègre le module iap . Cependant, je comprends qu'il n'est pas facile pour expo de maintenir son environnement, y compris la fonctionnalité iap . Apple rejettera d'abord l'application Expo Client dans l'App Store.

@dooboolab

Comme d'autres l'ont proposé, je serais cool s'il était juste écrasé pour le test. J'aime simplement expo pour l'expérience de développement.

J'envisage de le décomposer dans sa propre branche dans git et de garder la branche de développement conviviale. Une fois le déploiement terminé, je pourrais fusionner le code éjecté, le tester et déployer l'application.

@ImArtur la question est "Achat dans l'application à l'expo". Vous pouvez lire les avantages et les inconvénients de l'Expo ici: https://docs.expo.io/versions/latest/introduction/why-not-expo

@EvanBacon

Bonjour et merci pour cet article! Je me demande si (après le détachement) vous êtes censé continuer à construire avec exp, ou avec xcode, dans la branche "détachée"? Merci!

@EvanBacon aussi, comment testez-vous cela sur iOS? Poussez-vous une nouvelle version puis testez-la là-bas ou existe-t-il un moyen de tester les iaps localement avant?

Si je sais que j'aurai besoin d'achats intégrés à un moment donné du développement, dois-je toujours utiliser CRNA? ou aller directement à RN natif dès le début?

À moins bien sûr, expo devs implémente très bientôt l'achat in-app expo.

@edoantonioco Je l'ai fait fonctionner avec expo. Je crée juste une page avec des boutons iap pour acheter des articles et n'appuie sur ces boutons que lorsque je teste des achats et que je crée avec Xcode. Sinon je construis avec expo. Fonctionne très bien!

Désolé pour le retard. Lorsque vous vous détachez, vous ajoutez du code natif et le construisez sur votre appareil. Vous utilisez ensuite cette version comme le client expo (sauf uniquement pour votre application singulière). Je recommanderais toujours de m'en tenir à Expo. CRNA est maintenu par Expo et notre objectif est principalement de faire fonctionner les bibliothèques dans cet environnement. Vanilla React Native nécessitera beaucoup de configuration inutile et exigera que vous en sachiez beaucoup plus sur le fonctionnement interne des modules.

Bonjour, maintenant que vous évoquez le sujet. Si les achats intégrés sont un peu «difficiles» à gérer par Expo. Quelles sont les feuilles de route suggérées pour monétiser une application sans la détacher de l'Expo, puisque pour moi, comme beaucoup d'autres, j'utilise Expo pour le fait que l'expérience globale est beaucoup plus conviviale que RN et beaucoup moins complexe que de devenir natif sur les deux plateformes . Alors, pouvez-vous simplement utiliser un plan d'abonnement avec PayPal ou recevoir des paiements par carte de crédit? Est-ce que Google et Apple autorisent l'intégration, dans votre application Expo, en utilisant une vue Web par exemple? Merci.

@inglesuniversal

Si cela vaut quelque chose, nous avons fini par abandonner l'expo parce que nous en avions assez d'attendre que des problèmes comme celui-ci soient résolus.

Cela ajoute certainement de la friction aux tests et à la prise en charge de certaines fonctionnalités (comme les notifications), mais au moins mon développeur peut arrêter de me dire, "c'est impossible car expo ne le prend pas en charge".

Expo a annoncé cela récemment à propos du futur plan en 2019. Vous pourrez alors lier native modules .

J'ai essayé de faire fonctionner le code de

D'autres personnes ont-elles rencontré ce problème? Cela signifie-t-il que je ne suis pas correctement lié?

FWIW, le lien natif de réaction semble avoir fonctionné ...

$ 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 

mais je soupçonne que je pourrais avoir besoin de lier manuellement ce que je n'ai pas encore pu faire. Je ne trouve pas de dossier de bibliothèques.
https://forums.expo.io/t/trouble-linking-with-expokit-unable-to-find-libraries-in-xcode/16710

@EvanBacon Salut Monsieur,
Pouvez-vous me dire en détail?
J'ai essayé RN iap je l'ai lié
puis je exp détaché.
Ensuite, je vais ios dir et lancez l'installation du pod maintenant, il installe tout
que devrais-je faire ensuite?
Merci

@cellis pouvez-vous m'en dire plus sur la façon dont vous avez fait fonctionner l'inapp que j'essaye depuis 1 semaine maintenant pouvez-vous montrer le code s'il vous plaît?
Merci
et avez-vous construit avec expo ou xcode après l'installation du pod?
Merci

faites tout ce que vous feriez normalement
revenir au maître pour ajouter du code js
lors du codage en maître, enveloppez votre code de module IAP avec ce qui suit:
@EvanBacon quelle est la signification des lignes ci-dessus?

Simplement:

  • créer une nouvelle branche detached
  • exécuter exp detach
  • faites tout ce que vous feriez normalement
  • revenir à master pour ajouter du code js
  • lors du codage en master enveloppez le code de votre module IAP avec ce qui suit:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • De cette façon, votre code ne plantera pas lors de l'appel des méthodes IAP
  • Lors du déploiement ou du test d'IAP, utilisez la branche détachée - ou ignorez simplement les branches et devenez voyou> :)

L'idée générale ici étant exp detach apparaître un dossier /ios & /android afin que vous puissiez utiliser votre projet comme une application RN.
Vous aurez toujours toutes les fonctionnalités d'une application Expo standard, utilisez simplement Fastlane pour déployer afin de ne pas avoir besoin d'utiliser trop d'éléments natifs.
Enfin, les branches sont utiles pour mettre à jour les versions du SDK. Si, pour une raison quelconque, vous rencontrez un problème de mise à jour, vous pouvez simplement détacher à nouveau et ajouter cette bibliothèque une fois de plus.

Salut Evan,
Merci pour la suggestion. J'ai suivi les conseils et je n'ai pas d'erreur (j'ai lié manuellement react-native-iap). Cependant, la fonction hasIAP renvoie false même si RNIap.initConnection (); renvoie vrai. Je le teste avec ce simple morceau de code.

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

Savez-vous quel pourrait être le problème? (Ou n'importe qui lisant ceci)

Selon la documentation, https://docs.expo.io/versions/v32.0.0/sdk/payments/ , avez-vous configuré les paiements sur votre appareil? (le simulateur n'aurait pas de sens de tester cela avec)

Comme un utilisateur précédent sur cet article, la meilleure intention d'Expo pour ce premier trimestre est de mettre en œuvre un moyen de créer des applications et de pouvoir importer des bibliothèques natives React Native. À l'heure actuelle, il affiche une version bêta lors du démarrage d'un nouveau projet avec la CLI. J'espère que cela sera bientôt résolu.

Salut, il semble qu'il n'y ait eu aucune activité sur ce problème récemment. Le problème a-t-il été résolu ou nécessite-t-il toujours l'attention de la communauté? Ce problème peut être résolu si aucune autre activité ne se produit. Vous pouvez également étiqueter ce problème comme "Pour discussion" ou "Bon premier numéro" et je le laisserai ouvert. Merci pour vos contributions.

Veuillez le garder ouvert et aidez-nous à trouver un moyen d'en faire une réalité à partir de l'Expo SDK versión 33.0

Quelqu'un at-il des mises à jour sur ce problème?

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

Mise à jour: Désolé, j'ai manqué ce qui suit:

Ce module n'est actuellement disponible que dans le workflow nu.

@kkarkos En utilisant le propre module d'achat intégré d'Expo, vous devrez toujours éjecter votre application Expo (dans un avenir prévisible), donc cela ne résout pas vraiment le problème.

Si quelqu'un peut donner un guide plus détaillé sur la façon de tromper ce @EvanBacon nous décrivant, alors partagez-le. Peut-être même une application de démonstration?

@TheInternet Je rencontre le même problème avec le dossier "Bibliothèques" manquant. Avez-vous trouvé comment l'installer correctement sur iOS?

@inglesuniversal
Je suis intéressant, avez-vous trouvé des moyens intéressants de monétiser une application sans la détacher de l'expo?

Pouvons-nous utiliser les paiements électroniques avec webView? Est-ce légal?

Pour autant que je sache, vous pouvez utiliser des solutions tierces en tant qu'application Web (comme Stripe ou PayPal), mais dans l'AppStore ou le PlayStore, vous ne pouvez pas. Sinon, votre application peut être expulsée ou supprimée jusqu'à ce que vous le fassiez de la bonne manière via l'API que nous attendions tous depuis que j'ai commencé à utiliser Expo.

Vous pouvez utiliser Stripe ou Paypal dans votre application tant que vous achetez des biens et services externes (comme lorsque vous achetez un produit sur Amazon ou que vous payez dans l'application Uber), mais vous ne pouvez pas utiliser Stripe pour déverrouiller les fonctionnalités du logiciel d'application (comme vente de jetons de jeu ou de fonctionnalités premium)

Merci KevinColemanInc pour le commentaire ... Savez-vous si vous vendez des abonnements ou des paiements récurrents pour la location de films, le stockage en nuage, des cours en ligne ... Cela peut-il être payé en externe en utilisant Stripe ou PayPal dans une application -> (PlayStore ou AppStore) ? Merci pour vos commentaires!

@inglesuniversal

Si vous souhaitez déverrouiller des fonctionnalités ou des fonctionnalités au sein de votre application, (à titre d'exemple: abonnements, devises dans le jeu, niveaux de jeu, accès au contenu premium ou déverrouillage d'une version complète)

Voici les directives d'Apple:
https://developer.apple.com/app-store/review/guidelines/#in -app-purchase

Je pense que la plupart de ce que vous avez décrit relèverait du «contenu premium». Netflix est tenu de payer la taxe sur les

Il semble que Dropbox paie également la taxe Apple si vous vous inscrivez avec eux sur mobile. Je vérifierais l'application d'Udemy pour voir s'ils utilisent également IAP.

Salut, il semble qu'il n'y ait eu aucune activité sur ce problème récemment. Le problème a-t-il été résolu ou nécessite-t-il toujours l'attention de la communauté? Ce problème peut être résolu si aucune autre activité ne se produit. Vous pouvez également étiqueter ce problème comme "Pour discussion" ou "Bon premier numéro" et je le laisserai ouvert. Merci pour vos contributions.

Simplement:

  • créer une nouvelle branche detached
  • exécuter exp detach
  • faites tout ce que vous feriez normalement
  • revenir à master pour ajouter du code js
  • lors du codage en master enveloppez le code de votre module IAP avec ce qui suit:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • De cette façon, votre code ne plantera pas lors de l'appel des méthodes IAP
  • Lors du déploiement ou du test d'IAP, utilisez la branche détachée - ou ignorez simplement les branches et devenez voyou> :)

L'idée générale ici étant exp detach apparaître un dossier /ios & /android afin que vous puissiez utiliser votre projet comme une application RN.
Vous aurez toujours toutes les fonctionnalités d'une application Expo standard, utilisez simplement Fastlane pour déployer afin de ne pas avoir besoin d'utiliser trop d'éléments natifs.
Enfin, les branches sont utiles pour mettre à jour les versions du SDK. Si, pour une raison quelconque, vous rencontrez un problème de mise à jour, vous pouvez simplement détacher à nouveau et ajouter cette bibliothèque une fois de plus.

Désolé d'être si dense, mais cela signifie-t-il que vous ajoutez le code IAP à chaque branche séparément (si vous devez le `` envelopper '' pour la branche expo) et ensuite simplement rééjecter sur une nouvelle branche chaque fois que vous avez ajouté expo code au maître ou fusionner des branches à tout moment ??! Et est-ce toujours le meilleur moyen d'ajouter des IAP à une application d'expo gérée? Je suis en train de terminer ma première grande application et je dois ajouter cette fonctionnalité d'une manière ou d'une autre et le faire dans une branche semble peut-être une bonne option sûre - je veux juste m'assurer de comprendre le flux de travail! Je dois aussi dire que j'adore expo! Cela a été une manière géniale d'entrer dans la réaction native et sans elle, je n'aurais jamais été aussi loin alors merci et continuez votre bon travail !!!

Salut, il semble qu'il n'y ait eu aucune activité sur ce problème récemment. Le problème a-t-il été résolu ou nécessite-t-il toujours l'attention de la communauté? Ce problème peut être résolu si aucune autre activité ne se produit. Vous pouvez également étiqueter ce problème comme "Pour discussion" ou "Bon premier numéro" et je le laisserai ouvert. Merci pour vos contributions.

Clôture de ce numéro après une période d'inactivité prolongée. Si ce problème est toujours présent dans la dernière version, n'hésitez pas à créer un nouveau problème avec des informations à jour.

Simplement:

  • créer une nouvelle branche detached
  • exécuter exp detach
  • faites tout ce que vous feriez normalement
  • revenir à master pour ajouter du code js
  • lors du codage en master enveloppez le code de votre module IAP avec ce qui suit:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • De cette façon, votre code ne plantera pas lors de l'appel des méthodes IAP
  • Lors du déploiement ou du test d'IAP, utilisez la branche détachée - ou ignorez simplement les branches et devenez voyou> :)

L'idée générale ici étant exp detach apparaître un dossier /ios & /android afin que vous puissiez utiliser votre projet comme une application RN.
Vous aurez toujours toutes les fonctionnalités d'une application Expo standard, utilisez simplement Fastlane pour déployer afin de ne pas avoir besoin d'utiliser trop d'éléments natifs.
Enfin, les branches sont utiles pour mettre à jour les versions du SDK. Si, pour une raison quelconque, vous rencontrez un problème de mise à jour, vous pouvez simplement détacher à nouveau et ajouter cette bibliothèque une fois de plus.

Désolé d'être si dense, mais cela signifie-t-il que vous ajoutez le code IAP à chaque branche séparément (si vous devez le `` envelopper '' pour la branche expo) et ensuite simplement rééjecter sur une nouvelle branche chaque fois que vous avez ajouté expo code au maître ou fusionner des branches à tout moment ??! Et est-ce toujours le meilleur moyen d'ajouter des IAP à une application d'expo gérée? Je suis en train de terminer ma première grande application et je dois ajouter cette fonctionnalité d'une manière ou d'une autre et le faire dans une branche semble peut-être une bonne option sûre - je veux juste m'assurer de comprendre le flux de travail! Je dois aussi dire que j'adore expo! Cela a été une manière géniale d'entrer dans la réaction native et sans elle, je n'aurais jamais été aussi loin alors merci et continuez votre bon travail !!!

Salut! Avez-vous trouvé la réponse? Comment l'avez-vous mis en œuvre?

Cette page vous a été utile?
0 / 5 - 0 notes