React Native In App Покупка Android - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь добавить покупки в приложении (или, как Google любит называть это, «В биллинге приложения») в свое собственное приложение React.

Что я сделал:

  1. Создан продукт в консоли Google Play (с идентификатором "unlock_premium"
  2. yarn add react-native-iap ( эта библиотека)
  3. Добавлен код ниже для компонента в моем приложении
  4. Протестировано как с помощью react-native run-android на физическом устройстве, так и путем публикации его в альфа-тесте из консоли Google Play

Примечания. Приложение подписано, и в файле манифеста включены разрешения на выставление счетов, а версия react-native-iap - 0.3.23.

Выпуск: При запуске отладочной сборки console.log() просто печатает, что продукт имеет значение undefined, а productInfo не отображается на экране при запуске развернутой версии Alpha (поэтому продукт там также не определен). Переменная products - это просто пустой массив.

(Кажется, try заявление выполнено успешно, поскольку я не вижу ошибок, напечатанных на нем.)

import InAppPurchase from "react-native-iap";

const itemSKUs = Platform.select({
    android: [
        "com.kimer.unlock_premium" // I've also tried just "unlock_premium"
    ]
})
...

constructor(props) {
        super(props);
        this.state = {
            modalVisible: false,
            premiumProduct: undefined
        };
}

...

async componentDidMount() {
        try {
            await InAppPurchase.prepare();
            const products = await InAppPurchase.getProducts(itemSKUs);
            console.log("finished call to get products");
            console.log(products[0]);
            this.setState({premiumProduct: products[0]});
        } catch (err) {
            console.warn(err);
        }
}

...

render() {
        let productInfo;
        if (this.state.premiumProduct !== undefined) {
            productInfo = (
                <Text>{this.state.premiumProduct}
                {this.state.premiumProduct.localizedPrice}
                {this.state.premiumProduct.currency} {this.state.premiumProduct.productID}
                {this.state.premiumProduct.title}
                {this.state.premiumProduct.description}</Text>
            );
        }

        return (
            <View>
                ...
                {productInfo}
                ...
            </View>
        );
}

1 Ответ

0 голосов
/ 03 мая 2018

РЕШИТЬ: Теперь это работает для меня ?! Я попробовал пару вещей, но я не уверен, что было ключом к тому, чтобы заставить его работать ? Вот что я сделал в любом случае:

  1. Переустановил пакет
  2. Изменил мое заявление на импорт с import InAppPurchase from "react-native-iap;" to "import * as InAppPurchase from 'react-native-iap';"
  3. Изменен мой SKU в коде с "com.kimer.unlock_premium" на "unlock_premium"
...