0,3.15
Android
Получить все продукты
Все работает нормально на iOS, но getProducts всегда возвращает пустой массив на android.
Я думаю, что это проблема с конфигурацией, но я следил за каждым шагом ...
Загрузка APK с разрешением на выставление счетов / настройка учетной записи продавца / создание покупки в приложении ...
Такая же проблема здесь
Мой фрагмент:
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 выводит следующий журнал:
const itemSkus = Platform.select ({
ios: [
'predictorcart_1500',
],
android: [
'predictorcart_1500',
'android.test.purchased',
'android.test.canceled',
'android.test.refunded',
'android.test.item_unavailable',
],
});
изменение на componentDidMount
async componentDidMount () {
пытаться {
ждать RNIap.prepare ();
ждать this.getItems ();
}
catch (err) {
console.warn (код ошибки, сообщение об ошибке);
}
}
Измените получаемые данные
getProductDetails = async () => {
пытаться {
const products = await RNIap.getProducts (itemSkus);
console.log ('=======> Товары ::::', товары);
this.setState ({productDetails: products});
} catch (err) {
console.warn (код ошибки, сообщение об ошибке);
}
}
Поставить кнопку
\
Установите приложение на устройство
реагировать-родной 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.
после этого попробуйте.
Удачного кодирования.
Самый полезный комментарий
@vadermemo @martinberbesson Привет ~ Не могли бы вы поделиться своим js-кодом за
itemSkus
? Вы настроили, как показано ниже, код?Кроме того, черновое тестирование приложения больше не поддерживается. Пожалуйста, обратитесь к руководству . Обязательно опубликуйте свое приложение на альфа- или бета-канале.