React-native-iap: [Android] getProducts renvoie toujours un tableau vide

Créé le 25 avr. 2018  ·  19Commentaires  ·  Source: dooboolab/react-native-iap

Version de react-native-iap

0,3,15

Plateformes sur lesquelles vous avez rencontré l'erreur (IOS ou Android ou les deux?)

Android

Comportement attendu

Obtenez tous les produits

Comportement réel

Tout fonctionne bien sur iOS mais getProducts renvoie toujours un tableau vide sur Android.
Je pense que c'est un problème de configuration mais j'ai suivi chaque étape ...

Téléchargement d'APK avec autorisation de facturation / configuration du compte marchand / création lors de l'achat d'une application ...

🙏 help wanted

Commentaire le plus utile

@vadermemo @martinberbesson Salut ~ Pourriez-vous partager votre code js pour itemSkus ? Avez-vous configuré le code ci-dessous?

export const PURCHASE_ITEMS = Platform.select({
  ios: [
    'productid_1',
    'productid_2',
  ],
  android: [
    'productid_1',
    'productid_2',
  ],
});

De plus, le test des brouillons d'application n'est plus pris en charge. Veuillez consulter le guide . Assurez-vous de publier votre application sur le canal alpha ou bêta.

Tous les 19 commentaires

Même problème ici

Mon extrait:

  RNIap.prepare().then(responsePrepare => {
    console.log("=============>responsePrepare:" + responsePrepare);
    RNIap.getProducts(itemSkus).then(response => {
        this.setState({ items  : response});
        console.log("=============>response:" + JSON.stringify(response));
    });
  });

Ma réponse sur adb.logcat (Android)

208 28473 28524 I ReactNativeJS: exécution de l'application "testingIap" avec appParams: {"rootTag": 11}. __DEV__ === true, l'avertissement au niveau du développement est activé, les optimisations de performances sont désactivées
04-25 17: 04: 04.228 1140 1150 I AccountManagerService: getTypesVisibleToCaller: isPermitted? vrai
04-25 17: 04: 04.230 1140 2059 I AccountManagerService: getTypesVisibleToCaller: isPermitted? vrai
04-25 17: 04: 04.232 24842 24933 I Finsky: [4061] com.google.android.finsky.billing.iab.ab.b (46): com.projectbundle: Compte du premier compte - [uuAJBL1tLX2MAj69S-olEslXXXX]
04-25 17: 04: 04.233 28473 28473 D RNIapModule: client de facturation prêt
04-25 17: 04: 04.303 28473 28524 I ReactNativeJS: =============> responsePrepare: null
04-25 17: 04: 04.308 28473 28524 I ReactNativeJS: =============> responsePrepare: null
04-25 17: 04: 04.328 1140 2107 I AccountManagerService: getTypesVisibleToCaller: isPermitted? vrai
04-25 17: 04: 04.330 1140 1896 I AccountManagerService: getTypesVisibleToCaller: isPermitted? vrai
04-25 17: 04: 04.339 1140 2095 I AccountManagerService: getTypesVisibleToCaller: isPermitted? vrai
04-25 17: 04: 04.340 1140 1679 I AccountManagerService: getTypesVisibleToCaller: isPermitted? vrai
04-25 17: 04: 04.343 24842 24854 I Finsky: [4020] com.google.android.finsky.billing.iab.ab.b (46): com.projectbundle: Compte du premier compte - [uuAJBL1tLX2MAj69S-olEslXXXX]
04-25 17: 04: 04.347 24842 24853 I Finsky: [4019] com.google.android.finsky.billing.iab.ab.b (46): com.projectbundle: Compte du premier compte - [uuAJBL1tLX2MAj69S-olEslXXXX]
04-25 17: 04: 04.626 28473 28525 D RNIapModule: réponseCode: 0
04-25 17: 04: 04.628 28473 28525 D RNIapModule: réponseCode: 0
04-25 17: 04: 04.669 28473 28524 I ReactNativeJS: =============> réponse: []
04-25 17: 04: 04.693 28473 28524 I ReactNativeJS: =============> réponse: []

Mais avec iOS, j'obtiens le tableau avec le format du puits de données.

PD1 Je reçois la recommandation de https://medium.com/@dooboolab/react -native-in-app-purchase-121622d26b67

PD2 "Aidez-moi Obi Wan Kenobi, vous êtes mon seul espoir"

Extrait de package.json:
"dépendances": {
"réagir": "16.3.1",
"natif réactif": "0,55,3",
"react-native-iap": "^ 0.3.18"
},

@vadermemo @martinberbesson Salut ~ Pourriez-vous partager votre code js pour itemSkus ? Avez-vous configuré le code ci-dessous?

export const PURCHASE_ITEMS = Platform.select({
  ios: [
    'productid_1',
    'productid_2',
  ],
  android: [
    'productid_1',
    'productid_2',
  ],
});

De plus, le test des brouillons d'application n'est plus pris en charge. Veuillez consulter le guide . Assurez-vous de publier votre application sur le canal alpha ou bêta.

Salut @dooboolab

Ce sont mes données
const itemSkus = Platform.select ({
ios: [
"com.iap.cart",
«com.iap.doublecoins»
],
Android: [
'double',
'cart_1500'
],
});

Meilleures salutations

PD1 Mon application est en version alfa, même pas les produits.
PD2 Avec d'autres npm, comme la facturation native de réaction, je peux obtenir les produits :(

@vadermemo ce souds vraiment mauvais pour moi .. désolé pour ça. Cela fonctionne bien dans mon environnement. Je déboguerai plus demain et reviendrai sûrement demain! Pourriez-vous également essayer de saisir la déclaration et voir ce qui y apparaît?

Je pense que j'ai besoin d'une version alpha ... Télécharger un apk avec l'autorisation de facturation n'est pas suffisant

@dooboolab Eh bien, s'il existe une aide pour vous, c'est peut-être le point suivant:

quand j'ai mis la configuration sur react-native-billing j'ai mis dans le fichier de ressources "string.xml" la chaîne de paramètres name = "RNB_GOOGLE_PLAY_LICENSE_KEY"
mais dans react-native-iap je ne peux pas voir ce paramètre en action.

Le try-catch dont vous avez besoin lance le journal suivant:

  1. Changer mes articles

const itemSkus = Platform.select ({
ios: [
'predictorcart_1500',
],
Android: [
'predictorcart_1500',
"android.test.purchased",
"android.test.canceled",
"android.test.refunded",
'android.test.item_unavailable',
],
});

  1. changement sur componentDidMount

    async componentDidMount () {
    essayez {
    attendre RNIap.prepare ();
    attendez this.getItems ();

    }
    attraper (err) {
    console.warn (err.code, err.message);
    }
    }

  2. Changer les données d'obtention

    getProductDetails = async () => {
    essayez {
    produits const = attendre RNIap.getProducts (itemSkus);
    console.log ('=======> Produits ::::', produits);
    this.setState ({productDetails: produits});
    } catch (err) {
    console.warn (err.code, err.message);
    }
    }

  3. Mettre un bouton
    \

  4. Mettez l'application sur l'appareil
    react-native run-android --variant = release

6.Enfin, le journal est le suivant:
04-26 12: 53: 11.335 16749 16759 I Finsky: [11707] com.google.android.finsky.billing.iab.ab.b (46): com.projectbundle: Compte du premier compte - [uuAJBL1tLX2MAj69S-olEl331212]
04-26 12: 53: 11.401 226 1177 V audio_hw_primary: do_output_standby dans
04-26 12: 53: 11.409 20362 20432 D RNIapModule: réponseCode: 0
04-26 12: 53: 11.426 226 1177 W audio_hw_primary: do_output_standby.mode: 0
04-26 12: 53: 11.426 226 1177 V audio_hw_primary: do_output_standby in out
04-26 12: 53: 11.427 1140 2106 D PowerManagerService: releaseWakeLockInternal: lock = 87714678 [AudioMix], flags = 0x0, total_time = 3166ms
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: '=======> Produits ::::', [{description: 'Descripción de muestra para el producto: android.test.canceled.',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: titre: 'Título de muestra',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: localiséPrix: '$ 18.65',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: tapez: 'inapp',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: devise: 'MXN',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: prix: '18 .65 ',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: productId: 'android.test.canceled'},
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: {description: 'Descripción de muestra para el producto: android.test.item_unavailable.',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: titre: 'Título de muestra',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: localiséPrix: '$ 18.65',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: tapez: 'inapp',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: devise: 'MXN',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: prix: '18 .65 ',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: productId: 'android.test.item_unavailable'},
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: {description: 'Descripción de muestra para el producto: android.test.purchased.',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: titre: 'Título de muestra',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: localiséPrix: '$ 18.65',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: tapez: 'inapp',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: devise: 'MXN',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: prix: '18 .65 ',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: productId: 'android.test.purchased'},
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: {description: 'Descripción de muestra para el producto: android.test.refunded.',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: titre: 'Título de muestra',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: localiséPrix: '$ 18.65',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: tapez: 'inapp',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: devise: 'MXN',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: prix: '18 .65 ',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: productId: 'android.test.refunded'}]

@martinberbesson J'ai une application en version alpha, même si je ne peux pas obtenir les produits. Je pense que c'est autre chose, peut-être une configuration dans react-native-iap ou google console.

@martinberbesson @dooboolab Incroyable !!

J'ai créé une autre application avec les mêmes étapes et l'application fonctionne sur iOS et Android !!. Je ne peux pas y croire.

Je ne sais pas quelle est la raison, mais je pense que c'est quelque chose de configuration sur le code ou la console Google.

PD J'attendais 5 heures pour obtenir le bon itemSkus.
PD2 L'ancienne application n'obtient pas des itemsSkus même avec 24 heures.
PD3 @dooboolab Maintenant, vous pouvez dormir tranquillement. :)
PD4 Je vais développer le processus d'achat, j'espère que c'est facile

Meilleures salutations,

@vadermemo Heureux que cela fonctionne. De plus, pour le nouveau module iap pour Android qui est v3, vous n'avez rien d'autre à mettre dans string.xml .

Par # 124, je pense que cela se produit encore - au moins pour les applications existantes, il serait bon d'avoir une solution pour cela également.

Pour tous ceux qui rencontrent toujours ce problème, vous devez tout d'abord lire https://stackoverflow.com/a/35132936/1374827 et vous assurer que vous avez satisfait à toutes les exigences décrites dans cet article.

Si tout cela est bon, vérifiez que vous appelez la fonction appropriée. Pour moi, j'avais une application où j'utilisais uniquement les achats intégrés par abonnement, mais j'appelais par erreur RNIap.getProducts et bien sûr, je récupérais un tableau vide. J'ai dû appeler à la place RNIap.getSubscriptions et les abonnements ont ensuite été retournés.

Dans le même ordre d'idées, assurez-vous d'appeler RNIap.buySubscription si vous achetez un abonnement et RNIap.buyProduct si vous achetez un produit.

Ok après avoir lutté avec ça, mon problème s'est avéré être mon inexpérience avec Android. J'avais joué avec le nom du package dans dev et bien qu'il fonctionnait bien sur le périphérique, le nom du package n'étant pas parfaitement configuré, c'est pourquoi il renvoyait un tableau vide. Après avoir suivi ces étapes et celles- ci, tout semble bon.

Je reçois également un tableau vide,
Et je suis confus avec https://developer.android.com/google/play/billing/billing_testing#draft_apps doc, que j'ai besoin d'un compte de test et d'ajouter un testeur, alors s'il vous plaît, n'importe qui peut m'aider pour cela.

Merci!

même

@bharatidudhjiya @tmjordan Si vous rencontrez un problème de configuration, j'aimerais que vous essayiez d'abord le projet pur android iap et voyez s'il fonctionne correctement. Cela vous aiderait également à mieux comprendre le iap sdk d'Android.

@hyochan merci, c'est une bonne idée. Je le ferai

@tmjordan Ceci est assez ancien mais cela pourrait vous aider à la configuration de base.

merci mec @hyochan

Je l'ai résolu! J'utilise ces versions,

react-native-iap: ^4.3.0
react-native: 0.60.5

fais le comme ça

const itemSkus = Platform.select({
    ios: [
        '100coins' // just remove bundle id from product id
    ],
    android: [
        '100coins' // just remove bundle id from product id
    ]
});

Assurez-vous que vous avez le nom de package correct pour votre application.

et au cas où vous l'avez changé de la commande react-native. cela ne fonctionnera toujours pas.

Vous devez le faire manuellement, puis nettoyer le projet en utilisant ./gradlew clean dans le dossier android.

après cela, essayez-le.

Bon codage.

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