React native React Native IAP Возможный необработанный отказ от обещания (id: 1): «Требуется \"skus\"»

Я устанавливаю и связываю реакцию с собственным React Native IAP, а также загружаю приложение в магазин игр, после чего он создает идентификатор продукта подписки. Но когда я запрашиваю подписку, я получаю эту ошибку

Ошибка

Идентификатор продукта подписки


const items = Platform.select({
  ios: [
    'dev.products.gas',
    'dev.products.premium',
    'dev.products.gold_monthly',
    'dev.products.gold_yearly',
  ],
  android: ['dev.products.gas',
  'dev.products.premium',
  'dev.products.gold_monthly',
  'dev.products.gold_yearly',],
});


import React, { useEffect } from 'react';
import { View, Text, Button, Platform } from 'react-native';
import { requestPurchase, useIAP } from 'react-native-iap';

const ParchesCode = () => {
  const {
    connected,
    products,
    promotedProductsIOS,
    subscriptions,
    purchaseHistories,
    availablePurchases,
    currentPurchase,
    currentPurchaseError,
    initConnectionError,
    finishTransaction,
    getProducts,
    getSubscriptions,
    getAvailablePurchases,
    getPurchaseHistories,
  } = useIAP();

  const handlePurchase = async (sku) => {
    await requestPurchase({ sku });
  };

  useEffect(() => {
    // ... listen to currentPurchaseError, to check if any error happened
  }, [currentPurchaseError]);

  useEffect(() => {
    // ... listen to currentPurchase, to check if the purchase went through
  }, [currentPurchase]);

  return (
    <View style = {{ flex: 1, }}>
      <Button
        title = "Get the products"
        onPress = {() => getSubscriptions(items)}
      />

      {subscriptions.map((product) => (
        <View key = {product.productId}>
          <Text>{product.productId}</Text>

          <Button
            title = "Buy"
            onPress = {() => handlePurchase(product.productId)}
          />


        </View>
      ))}
      <Text>{JSON.stringify(connected)}</Text>
      <Text>{JSON.stringify(connected)}</Text>
    </View>
  );
};

export default ParchesCode;

Я не получаю подписки, когда вызываю функцию getSubscriptions(). Мне нужен результат после вызова этого, но я получаю такую ​​​​ошибку -> Возможный отказ от необработанного обещания (id: 0): требуется скус

Хук useOnClickOutside в ReactJS
Хук useOnClickOutside в ReactJS
Как разработчик ReactJS, вы, возможно, сталкивались с ситуацией, когда вам нужно закрыть модальное или выпадающее меню, когда кто-то щелкает за его...
Хуки (часть-2) - useEffect
Хуки (часть-2) - useEffect
Хук useEffect - один из самых мощных и универсальных инструментов в арсенале разработчика React. Он позволяет вам управлять побочными эффектами в...
[LXI-SpartaCodingClub Full-Stack Bootcamp in Indonesia] 2023/1/21 TIL/Week 15]
[LXI-SpartaCodingClub Full-Stack Bootcamp in Indonesia] 2023/1/21 TIL/Week 15]
Я научился создавать карусель в ReactJS с помощью библиотеки Splide.
Краткое введение в Styled-компоненты
Краткое введение в Styled-компоненты
В настоящее время популярность Styled-компонентов становится все больше и больше. Большинство проектов, построенных на React.js, используют эту...
ДЕНЬ 8 | Страница обзора в React
ДЕНЬ 8 | Страница обзора в React
На этом сегодня все, завтра снова увидимся с новым проектом!
Как настроить среду разработки React.
Как настроить среду разработки React.
Весь процесс настройки среды разработки react.
1
0
458
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот с рабочим примером. проблема связана с изменением кода, но документация не обновляется.

Вот список продуктов. код только для iOS.

import {requestPurchase, useIAP, withIAPContext} from 'react-native-iap';
    const myProducts = [
      'product.example.1',
      'product.example.2',
    ];
const InAppPurchaseScreen = ({navigation}) => {
     useEffect(() => {
           getProductsAndPurchases();
     }, []);
    const getProductsAndPurchases = async () => {
       try {
         await getProducts({skus: myProducts});
       } catch (error) {
         //console.info("Products error: ", error)
       }
    };

}
export default withIAPContext(InAppPurchaseScreen);

Спасибо, чувак, я пытался с 2 дней

piyas Talukder 18.11.2022 07:22

Не за что. то же самое я сделал это в 7 дней. :(

Engr.Aftab Ufaq 18.11.2022 07:23

Можете ли вы дать мне код requestSubscription man? Я делаю это так: const handlePurchase = async (sku) => { try { const result = await requestSubscription({skus:[sku]}); console.info(результат) } catch (ошибка) { console.info(ошибка) } };

piyas Talukder 18.11.2022 07:49

Const PurchaseItemSearch = async () => { setCheckingPayment (true); try { await requestPurchase({ артикул: 'product1.example.1', }); } catch (ошибка) { // console.info(ошибка) setCheckingPayment(false); setCancelPurchase (истина); } };

Engr.Aftab Ufaq 18.11.2022 07:50

Я добавляю этот код, но получаю ту же ошибку. const PurchaseItemSearch = async () => { try { await requestPurchase({ sku: 'com.mylocal.mounthly', }); } поймать (ошибка) { console.info (ошибка) }; }. [Ошибка: для покупки Android требуется артикул]

piyas Talukder 18.11.2022 11:43

Попробуйте с SKUS собственностью. или может быть какая-то проблема с вашей подпиской.

Engr.Aftab Ufaq 18.11.2022 11:48

Для Android вот рабочий пример react-native-iap с последней версией.

import {  initConnection, getSubscriptions, requestSubscription } from 'react-native-iap';

const products = ['example_799_1m', 'example_1100_3m'];

useEffect(() => {
 initConnection()
  .catch(() => {
    console.info('error connecting to store...');
  })
  .then(() => {
    getSubscriptions({skus: products})
      .catch(() => {
        console.info('error finding products');
      })
      .then(res => {
        console.info('products with offerToken', res);
        // store/handle response
      });
  });
}, []);

const handleRequestSubscription = () => {
   requestSubscription({
      sku: productId,
      ...(offerToken && {
         subscriptionOffers: [
           {
             sku: productId,          // as a string
             offerToken: offerToken,  // as a string
           },
         ],
      }),
    })
    .catch(err => {
       console.info('error buying product', err);
     })
    .then(async res => {
      console.info('request subscription ',JSON.stringify(res));
      // handle/store response
    });
}
  • "реагировать-нативный-иап": "^ 12.4.12",
  • Реагировать нативный: 0.70.6

Другие вопросы по теме