React-native-iap: [Android] getProducts всегда возвращает пустой массив

Созданный на 25 апр. 2018  ·  19Комментарии  ·  Источник: dooboolab/react-native-iap

Версия react-native-iap

0,3.15

Платформы, на которых вы столкнулись с ошибкой (IOS или Android или оба?)

Android

Ожидаемое поведение

Получить все продукты

Фактическое поведение

Все работает нормально на iOS, но getProducts всегда возвращает пустой массив на android.
Я думаю, что это проблема с конфигурацией, но я следил за каждым шагом ...

Загрузка APK с разрешением на выставление счетов / настройка учетной записи продавца / создание покупки в приложении ...

🙏 help wanted

Самый полезный комментарий

@vadermemo @martinberbesson Привет ~ Не могли бы вы поделиться своим js-кодом за itemSkus ? Вы настроили, как показано ниже, код?

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

Кроме того, черновое тестирование приложения больше не поддерживается. Пожалуйста, обратитесь к руководству . Обязательно опубликуйте свое приложение на альфа- или бета-канале.

Все 19 Комментарий

Такая же проблема здесь

Мой фрагмент:

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

Мой ответ на adb.logcat (Android)

208 28473 28524 I ReactNativeJS: Запуск приложения "testingIap" с appParams: {"rootTag": 11}. __DEV__ === true, предупреждение на уровне разработки включено, оптимизация производительности выключена
04-25 17: 04: 04.228 1140 1150 I AccountManagerService: getTypesVisibleToCaller: isPermitted? правда
04-25 17: 04: 04.230 1140 2059 I AccountManagerService: getTypesVisibleToCaller: isPermitted? правда
04-25 17: 04: 04.232 24842 24933 I Фински: [4061] com.google.android.finsky.billing.iab.ab.b (46): com.projectbundle: Аккаунт из первого аккаунта - [uuAJBL1tLX2MAj69S-olEslXXXX]
04-25 17: 04: 04.233 28473 28473 D RNIapModule: клиент биллинга готов
04-25 17: 04: 04.303 28473 28524 Я ReactNativeJS: =============> responsePrepare: null
04-25 17: 04: 04.308 28473 28524 Я ReactNativeJS: =============> responsePrepare: null
04-25 17: 04: 04.328 1140 2107 I AccountManagerService: getTypesVisibleToCaller: isPermitted? правда
04-25 17: 04: 04.330 1140 1896 I AccountManagerService: getTypesVisibleToCaller: isPermitted? правда
04-25 17: 04: 04.339 1140 2095 I AccountManagerService: getTypesVisibleToCaller: isPermitted? правда
04-25 17: 04: 04.340 1140 1679 I AccountManagerService: getTypesVisibleToCaller: isPermitted? правда
04-25 17: 04: 04.343 24842 24854 I Фински: [4020] com.google.android.finsky.billing.iab.ab.b (46): com.projectbundle: Аккаунт из первого аккаунта - [uuAJBL1tLX2MAj69S-olEslXXXX]
04-25 17: 04: 04.347 24842 24853 I Фински: [4019] com.google.android.finsky.billing.iab.ab.b (46): com.projectbundle: Аккаунт из первого аккаунта - [uuAJBL1tLX2MAj69S-olEslXXXX]
04-25 17: 04: 04.626 28473 28525 D RNIapModule: responseCode: 0
04-25 17: 04: 04.628 28473 28525 D RNIapModule: responseCode: 0
04-25 17: 04: 04.669 28473 28524 Я ReactNativeJS: =============> ответ: []
04-25 17: 04: 04.693 28473 28524 Я ReactNativeJS: =============> ответ: []

Но с iOS я получаю массив с форматом данных.

PD1 Я получаю рекомендацию от https://medium.com/@dooboolab/react -native-in-app-Purchase-121622d26b67

PD2 «Помоги мне, Оби Ван Кеноби, ты моя единственная надежда»

Фрагмент Package.json:
"dependencies": {
"реагировать": "16.3.1",
"react-native": "0.55.3",
"реагировать-native-iap": "^ 0.3.18"
},

@vadermemo @martinberbesson Привет ~ Не могли бы вы поделиться своим js-кодом за itemSkus ? Вы настроили, как показано ниже, код?

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

Кроме того, черновое тестирование приложения больше не поддерживается. Пожалуйста, обратитесь к руководству . Обязательно опубликуйте свое приложение на альфа- или бета-канале.

Привет @dooboolab

Это мои данные
const itemSkus = Platform.select ({
ios: [
'com.iap.cart',
'com.iap.doublecoins'
],
android: [
'двойной',
"cart_1500"
],
});

С наилучшими пожеланиями

PD1 Мое приложение в альфа-версии, даже продукты не получаю.
PD2 С другими npm, такими как response-native-billing, я могу получить продукты :(

@vadermemo мне очень жаль, что эти звуки плохи ... извините за это. Он отлично работает в моей среде. Я буду отлаживать больше завтра и обязательно вернусь завтра! Также не могли бы вы попытаться поймать утверждение и посмотреть, что там появляется?

Я думаю, мне нужна альфа-версия ... Загрузить apk с разрешением на выставление счетов недостаточно

@dooboolab Что ж, если вам что-то поможет, возможно, следующий пункт:

когда я помещаю конфигурацию в response-native-billing, я помещаю в файл ресурсов "string.xml" строку параметров name = "RNB_GOOGLE_PLAY_LICENSE_KEY"
но в react-native-iap я не вижу этот параметр в действии.

Требуемый try-catch выводит следующий журнал:

  1. Изменить мои товары

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

  1. изменение на componentDidMount

    async componentDidMount () {
    пытаться {
    ждать RNIap.prepare ();
    ждать this.getItems ();

    }
    catch (err) {
    console.warn (код ошибки, сообщение об ошибке);
    }
    }

  2. Измените получаемые данные

    getProductDetails = async () => {
    пытаться {
    const products = await RNIap.getProducts (itemSkus);
    console.log ('=======> Товары ::::', товары);
    this.setState ({productDetails: products});
    } catch (err) {
    console.warn (код ошибки, сообщение об ошибке);
    }
    }

  3. Поставить кнопку
    \

  4. Установите приложение на устройство
    реагировать-родной run-android --variant = release

6. Наконец, журнал выглядит следующим образом:
04-26 12:53: 11.335 16749 16759 I Фински: [11707] com.google.android.finsky.billing.iab.ab.b (46): com.projectbundle: Аккаунт из первого аккаунта - [uuAJBL1tLX2MAj69S-olEl331212]
04-26 12:53: 11.401 226 1177 В audio_hw_primary: do_output_standby in
04-26 12:53: 11.409 20362 20432 D RNIapModule: responseCode: 0
04-26 12:53: 11.426 226 1177 Вт audio_hw_primary: do_output_standby.mode: 0
04-26 12:53: 11.426 226 1177 В 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 = 3166 мс
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: '=======> Products ::::', [{description: 'Descripción de muestra para el producto: android.test.canceled.',
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: название: 'Título de muestra',
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: localizedPrice: '18,65 $',
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: тип: 'inapp',
04-26 12:53: 11.444 20362 20431 I ReactNativeJS: валюта: MXN,
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: цена: '18 .65 ',
04-26 12: 53: 11.444 20362 20431 Я 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 Я ReactNativeJS: название: 'Título de muestra',
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: localizedPrice: '18,65 $',
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: тип: 'inapp',
04-26 12:53: 11.444 20362 20431 I ReactNativeJS: валюта: MXN,
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: цена: '18 .65 ',
04–26 12: 53: 11.444 20362 20431 Я 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 Я ReactNativeJS: название: 'Título de muestra',
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: localizedPrice: '18,65 $',
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: тип: 'inapp',
04-26 12:53: 11.444 20362 20431 I ReactNativeJS: валюта: MXN,
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: цена: '18 .65 ',
04-26 12: 53: 11.444 20362 20431 Я 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 Я ReactNativeJS: название: 'Título de muestra',
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: localizedPrice: '18,65 $',
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: тип: 'inapp',
04-26 12:53: 11.444 20362 20431 I ReactNativeJS: валюта: MXN,
04-26 12:53: 11.444 20362 20431 Я ReactNativeJS: цена: '18 .65 ',
04-26 12: 53: 11.444 20362 20431 Я ReactNativeJS: productId: 'android.test.refunded'}]

@martinberbesson У меня есть альфа-версия приложения, даже я не могу получить продукты. Думаю, это другое дело, может быть, конфигурация в консоли react-native-iap или google.

@martinberbesson @dooboolab Невероятно !!

Я сделал другое приложение с теми же шагами, и оно работает на iOS и Android !!. Я не могу в это поверить.

Я не знаю, в чем причина, но я думаю, что это какая-то конфигурация в коде или консоли Google.

П.Д. Я ждал 5 часов, чтобы получить нужный пункт Skus.
PD2 Старое приложение не получает itemsSkus даже с 24 часов.
PD3 @dooboolab Теперь ты можешь спать спокойно. :)
PD4 Я буду развивать процесс покупки, надеюсь, что это легко

С наилучшими пожеланиями,

@vadermemo Рад, что он работает. Кроме того, для нового модуля iap для Android, который является v3, вам не нужно ничего помещать в string.xml .

Per # 124 Я думаю, что это все еще происходит - по крайней мере, для существующих приложений, для которых было бы неплохо иметь решение.

Тем, кто все еще сталкивается с этой проблемой, прежде всего следует прочитать https://stackoverflow.com/a/35132936/1374827 и убедиться, что вы выполнили все требования, изложенные в этом сообщении.

Если все в порядке, убедитесь, что вы вызываете соответствующую функцию. Что касается меня, у меня было приложение, в котором я использовал только покупки по подписке в приложении, но я ошибочно набирал RNIap.getProducts и, конечно, возвращал пустой массив. Вместо этого мне пришлось позвонить в RNIap.getSubscriptions и подписки были возвращены.

В том же духе убедитесь, что вы звоните в RNIap.buySubscription если вы покупаете подписку, и в RNIap.buyProduct если покупаете продукт.

Хорошо, после борьбы с этим моя проблема оказалась моей неопытностью с Android. Я возился с именем пакета в dev, и хотя он нормально работал на устройстве, имя пакета не было настроено идеально, поэтому он возвращал пустой массив. После выполнения этих шагов и их это все выглядит хорошо.

Я также получаю пустой массив,
И меня смущает https://developer.android.com/google/play/billing/billing_testing#draft_apps doc, что мне нужна тестовая учетная запись и добавить тестировщика, поэтому, пожалуйста, любой может мне помочь в этом.

Спасибо!

одно и тоже

@bharatidudhjiya @tmjordan Если вы, ребята, столкнулись с проблемой конфигурации, я бы хотел, чтобы вы сначала попробовали чистый проект Android iap и посмотрели, правильно ли он работает. Это также поможет вам лучше понять iap sdk для Android.

@hyochan, спасибо, это хорошая идея. я сделаю это

@tmjordan Это довольно старый он может помочь вам в базовой настройке.

спасибо, чувак @hyochan

Я решил это! Я использую эти версии,

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

просто сделай это вот так

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

Убедитесь, что у вас есть правильное имя пакета для вашего приложения.

и в случае, если вы изменили его из команды response-native. это все равно не сработает.

Вы должны сделать это вручную, а затем очистить проект с помощью ./gradlew clean в папке android.

после этого попробуйте.

Удачного кодирования.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги