React-native-iap: RNIap์€ Android์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ ๋™์ผํ•œ ์ฝ”๋“œ๋กœ iOS์—์„œ๋Š” ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2020๋…„ 07์›” 07์ผ  ยท  33์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dooboolab/react-native-iap

react-native-iap ๋ฒ„์ „
4.4.7

๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฒ„์ „
0.60.6

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ํ”Œ๋žซํผ(IOS ๋˜๋Š” Android ๋˜๋Š” ๋‘˜ ๋‹ค?)
๊ธฐ๊ณ„์  ์ธ์กฐ ์ธ๊ฐ„

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

     async componentDidMount() {
        try {
            const result = await RNIap.initConnection();
            await RNIap.consumeAllItemsAndroid();
            console.log('result', result);
            const products: Product[] = await RNIap.getProducts(itemSkus);
            this.setState({ products }, () => {console.log(this.state.products)});
        } catch (err) {
            console.warn(err.code, err.message);
        }

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์€ ํ„ฐ๋ฏธ๋„์— ์ธ์‡„๋œ .getProducts()์— ์˜ํ•ด ํ”Œ๋ ˆ์ด ์ฝ˜์†”์—์„œ ๊ฐ€์ ธ์˜จ ์ œํ’ˆ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

์‹ค์ œ ํ–‰๋™
์•ฝ์†์€ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. '๊ฒฐ์ œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค' ์˜ค๋ฅ˜

ํ…Œ์ŠคํŠธ๋œ ํ™˜๊ฒฝ(์—๋ฎฌ๋ ˆ์ดํ„ฐ? ์‹ค์ œ ์žฅ์น˜?)
์‹ค์ œ ๊ธฐ๊ธฐ(์•ฑ์€ ํ˜„์žฌ ์ œ์ž‘ ์ค‘)

ํ–‰๋™์„ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„
const itemSkus = Platform.select({ ios: [ 'com.example.1' ], android: [ 'com.example.1' ] });

     async componentDidMount() {
        try {
            const result = await RNIap.initConnection();
            await RNIap.consumeAllItemsAndroid();
            console.log('result', result);
            const products: Product[] = await RNIap.getProducts(itemSkus);
            this.setState({ products }, () => {console.log(this.state.products)});
        } catch (err) {
            console.warn(err.code, err.message);
        }
    this.purchaseUpdateSubscription = purchaseUpdatedListener(async (purchase: InAppPurchase | SubscriptionPurchase | ProductPurchase) => {
        console.log('purchaseUpdatedListener', purchase);
        const receipt = purchase.transactionReceipt;
        if (receipt) {
            try {
                // if (Platform.OS === 'ios') {
                //   finishTransactionIOS(purchase.transactionId);
                // } else if (Platform.OS === 'android') {
                //   // If consumable (can be purchased again)
                //   consumePurchaseAndroid(purchase.purchaseToken);
                //   // If not consumable
                //   acknowledgePurchaseAndroid(purchase.purchaseToken);
                // }
                const ackResult = await finishTransaction(purchase);
            } catch (ackErr) {
                console.warn('ackErr', ackErr);
            }

            this.setState({ receipt }, () => this.goNext());
        }
    },
    );

    this.purchaseErrorSubscription = purchaseErrorListener(
        (error: PurchaseError) => {
            console.log('purchaseErrorListener', error);
        },
    );
}
componentWillUnmount() {
    if (this.purchaseUpdateSubscription) {
        this.purchaseUpdateSubscription.remove();
        this.purchaseUpdateSubscription = null;
    }
    if (this.purchaseErrorSubscription) {
        this.purchaseErrorSubscription.remove();
        this.purchaseErrorSubscription = null;
    }
}

๋‚˜๋Š” ์ด๊ฒƒ์ด ์™œ ๊ทธ๋Ÿฐ์ง€ ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค. iOS์šฉ์œผ๋กœ ์ด ์ •ํ™•ํ•œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋ ˆ์ด ์ฝ˜์†”์—์„œ ๋ชจ๋“  ์ œํ’ˆ์„ ์„ค์ •ํ•˜๊ณ  ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์— ์ฒญ๊ตฌ ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•˜๊ณ  IAP ํŒจํ‚ค์ง€๋ฅผ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค(ํŒจํ‚ค์ง€๊ฐ€ ์ž๋™ ์—ฐ๊ฒฐ๋˜๋„๋ก AndroidX๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). Play ์Šคํ† ์–ด์— ๋กœ๊ทธ์ธํ–ˆ๊ณ  ์ตœ์‹  ๋ฒ„์ „์˜ Play ์Šคํ† ์–ด๊ฐ€ ์žˆ์ง€๋งŒ initConnection()์ด ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ญ˜ ๋” ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด. ๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ์ฝ์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ™ help wanted ๐Ÿค– android

๋ชจ๋“  33 ๋Œ“๊ธ€

๊ฒ ์Šต๋‹ˆ๊นŒ ์ด ๋„์›€?

๊ฒ ์Šต๋‹ˆ๊นŒ ์ด ๋„์›€?

๋ถˆํ–‰ํžˆ๋„ ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค :(. AndroidX ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ์ด์œ ๋กœ initConnection()์ด ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@damialajogun ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ์•Œ์•„

@hyochan ์•„์ด๋””์–ด ์žˆ์–ด?

@damialajogun ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ์•Œ์•„

ํ—ค์ด, ์•„๋‹ˆ, ๋‚˜๋Š” ์•„์ง ๊ทธ๊ฒƒ์„ ์•Œ์•„๋‚ด์ง€ ๋ชปํ–ˆ๋‹ค :(

AndroidManifest.xml ํŒŒ์ผ์— <uses-permission android:name="com.android.vending.BILLING" /> ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๊นŒ?

@hakkikonu ๋„ค ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค

๋‚ด ์˜ค๋ฅ˜ ๋กœ๊ทธ์ธ์—์„œ ๋ฏธ๊ตญ ๋ฐ ๋‰ด์งˆ๋žœ๋“œ์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๊ตญ๊ฐ€์˜ ์ผ๋ถ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งค์šฐ ๋ชจ์ˆœ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฌด์—‡์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์–ด๋–ค ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@joris1995 ๋‚˜๋„ ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ผ๋ถ€ ์‚ฌ์šฉ์ž๋Š” ์ธ์•ฑ ๊ตฌ๋งค๋ฅผ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” "sku๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. getItems๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋จผ์ € ์ œํ’ˆ์„ ๊ฐ€์ ธ์˜ค์‹ญ์‹œ์˜ค"์ด์ง€๋งŒ ๊ตฌ๋งค ํŒ์—…์— sku๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— sku๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. getProducts์—์„œ ๊ฐ€์ ธ์˜จ ๊ฐ์ฒด์˜ ๊ฐ€๊ฒฉ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. getItems๋Š” API์—๋„ ์—†์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ Google Play ์Šคํ† ์–ด ์•ฑ์€ ์ตœ์‹  ๋ฒ„์ „์ž…๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ๋Š” ๊ท€ํ•˜์˜ ์ „ํ™” ๋˜๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

๋˜ํ•œ ๋‹ค๋ฅธ Gmail ๊ณ„์ •์œผ๋กœ Google Play ์Šคํ† ์–ด์— ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๊ธฐ์˜ ์„ค์ •/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜/Google Play์—์„œ Google Play ์„œ๋น„์Šค ๋ฐ Google Play ์Šคํ† ์–ด ์•ฑ ์บ์‹œ ํŒŒ์ผ์„ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์‚ฌ์šฉ์ž/๊ณ„์ •/์ „ํ™”...

๋‚˜๋ฅผ ์œ„ํ•ด, ๊ทธ๊ฒƒ์€ ๋‚ด ์‚ฌ์šฉ์ž์˜ ์ผ๋ถ€์ผ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ตญ๊ฐ€, OS ๋ฒ„์ „ ๋˜๋Š” ์žฅ์น˜ ์ œ์กฐ์—…์ฒด์™€ ๊ฐ™์€ ์ผ๊ด€๋œ ์š”์†Œ๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. BugSnag์—์„œ 'Billing is not available.' ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๊ธฐ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ Play ์Šคํ† ์–ด๊ฐ€ ๋‹ค์šด๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.' ์ด๊ฒƒ์€ ๋ฌด์—‡์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ธ์•ฑ ๊ตฌ๋งค๋ฅผ ๋กœ๋“œํ•˜๋ ค๋ฉด ๋ฒ ํƒ€ ๋ฒ„์ „์„ ์ œ์ถœํ•ด์•ผ ํ•˜๋ฉฐ ๋ฆด๋ฆฌ์Šค ๋นŒ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋””๋ฒ„๊ทธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ ํƒ€๋Š” ํ•„์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํด๋กœ์ฆˆ๋“œ ์•ŒํŒŒ๋„ OK

์ €๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ ํƒ€๋„ ์ œ์ถœํ–ˆ๊ณ  4์ผ ์ „์— ์Šน์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์„ ์ดํ•ดํ•œ๋‹ค๋ฉด initConnection()์ด ํ…Œ์ŠคํŠธ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ ๋ฒ ํƒ€์—์„œ๋Š” ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ?

@Kamsou ๋„ค, ๋””๋ฒ„๊ทธ ๋นŒ๋“œ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ฃผ๋กœ "getProducts()"์ด์ง€๋งŒ.

์ถ”๊ฐ€ ์ •๋ณด: https://medium.com/bleeding-edge/testing-in-app-purchases-on-android-a6de74f78878

๋‚˜์—๊ฒŒ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€, ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ๊ตฌ๋งค๊ฐ€ ์ด๋ฃจ์–ด ์กŒ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
RNIap.getPurchaseHistory()
iOS์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ Android์—์„œ๋Š” "์˜ค๋ฅ˜: E_IAP_NOT_AVAILABLE"์ด๋ผ๋Š” ํ•œ ๊ฐ€์ง€ ์‹ค์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
_์ €๋Š” ๋กœ์ปฌ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค_

``` const initilizeIAPConnection = async () => { await initConnection() .then(async (connection) => { consumeAllItemsAndroid(); await getItems(); console.log('IAP result', connection); }) .catch((error) => { console.warn( IAP ์˜ค๋ฅ˜ ${error.code}`, error.message);
});
};

const getItems = ๋น„๋™๊ธฐ() => {
๋…ธ๋ ฅํ•˜๋‹ค {
const ๊ตฌ๋… = ๋Œ€๊ธฐ getSubscriptions(itemSkus);
console.log('์ œํ’ˆ', ๊ตฌ๋…);
setSubscriptions(๊ตฌ๋…);
} ์žก๊ธฐ(์˜ค๋ฅ˜) {
console.warn(err.code, err.message);
}
};
useEffect(() => {
์ดˆ๊ธฐํ™”IAPConnection();
}, []);

``` I just removed await for ์†Œ๋น„AllItemsAndroid(); ` ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค

@rizshivalli ๋‹น์‹ ์„ ์œ„ํ•ด ์ผํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์†Œ์‹์„ ๋“ค์œผ๋‹ˆ consumeAllItemsAndroid() ์ œ๊ฑฐํ•˜๋ฉด ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ฌธ์ œ๋Š” initConnection() ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ทธ ๋ถ€๋ถ„์„ ์ž‘๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@damialajogun try catch๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  .then ๋ฐ .catch๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

@rizshivalli ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค :(. ๋ชจ๋“  ์งˆ๋ฌธ์— ๋Œ€ํ•ด ์ฃ„์†กํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ํ„ฐ๋ฏธ๋„์— ์ธ์‡„ ๋œ ์•„๋ž˜์˜ '์ œํ’ˆ'์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด ๋ฌธ์ œ๋Š” ๋‹น๊ธฐ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์„ค์ •ํ•˜๊ณ  ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ์—๋„ ํ”Œ๋ ˆ์ด ์ฝ˜์†”์— ๊ตฌ์„ฑ๋œ ๋ชจ๋“  ์ œํ’ˆ.
const getItems = async () => { try { const subscriptions = await getSubscriptions(itemSkus); console.log('Products', subscriptions);

@damialajogun ์˜ˆ ์ž‘๋™ ์ค‘์ž…๋‹ˆ๋‹ค. Android์—์„œ๋„ ๊ฒฐ์ œ๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Android์—์„œ ๋นŒ๋“œ๋ฅผ ์•ŒํŒŒ ๋˜๋Š” ๋ฒ ํƒ€๋กœ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๊นŒ?

@rizshivalli ์•ŒํŒŒ๋‚˜ ๋ฒ ํƒ€๋Š” ์•„๋‹ˆ์ง€๋งŒ ํ”„๋กœ๋•์…˜ ๋‹จ๊ณ„์—์„œ ์ถœ์‹œํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด์—์„œ ๋ผ์ด๋ธŒ ์ค‘์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์‹ค์ œ ์žฅ์น˜(์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์•„๋‹˜)์— ์žˆ๋Š” ํ•œ ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๋ถˆํ–‰ํžˆ๋„ ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค....

์•ˆ๋…•ํ•˜์„ธ์š” @rizshivalli ๋น ๋ฅธ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์•ฑ์ด Google Play์— ๋ฌด๋ฃŒ ๋˜๋Š” ์œ ๋ฃŒ๋กœ ๋“ฑ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ด‘์‚ฐ์€ ๋ฌด๋ฃŒ์ง€๋งŒ ์ธ์•ฑ ๊ตฌ๋งค๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž๋Š” ์•ฑ์„ ๋ฌด๋ฃŒ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์•ฑ์—์„œ ๋น„์†Œ๋ชจํ’ˆ ๊ตฌ๋งค๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ). ํ•˜์ง€๋งŒ ์ด์ œ IAP๊ฐ€ ์ž‘๋™ํ•˜๋ ค๋ฉด ์œ ๋ฃŒ๋กœ ๋‚˜์—ด๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

@damialajogun ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ ์„ค์น˜ ๋น„์šฉ์„ ์ง€๋ถˆํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด๋ฃŒ ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋‘๋“ค ์ข‹์€ ์•„์นจ ์ด์˜ˆ์š”,
๊ฒฐ์ œ๊ฐ€ ์ž˜ ๋˜๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?
๋‚˜์™€ ํ•จ๊ป˜ initConnection์ด ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. initConnection์ด ์‹ค์ œ๋กœ ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ์ œํ’ˆ์„ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋‚˜๋ฅผ ์œ„ํ•ด ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ์•ฑ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Ios๋Š” ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋„์™€์ฃผ์„ธ์š”

๋‚˜๋Š” (์•„๋งˆ๋„) ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์•ฑ์— ๋‘ ๊ฐœ์˜ ๊ตฌ๋…์„ ๋” ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ์ด์ „ ๊ตฌ๋…๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
RNIap.getSubscriptions()๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ ค๊ณ  ํ•˜๋ฉด "Google์—์„œ ๊ฒฐ์ œ ์—ฐ๊ฒฐ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค"๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

RNIap.requestSubscription(subId, true)์„ ์‹œ๋„ํ•˜๋ฉด "Sku๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Skus๊ฐ€ Google Play์— ๋“ฑ๋ก๋˜์–ด ์žˆ๊ณ  ID๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ๋‹ค์‹œ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๋””๋ฒ„๊ทธ ๋ฐ ๋ฆด๋ฆฌ์Šค ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๋ฐ ์‹ค์ œ ์žฅ์น˜์—์„œ ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์•„์ด๋””์–ด๋ผ๋„?

์•ˆ๋…•ํ•˜์„ธ์š”, ์ตœ๊ทผ์— ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ™œ๋™์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๊ฑฐ๋‚˜ ์—ฌ์ „ํžˆ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ด€์‹ฌ์ด ํ•„์š”ํ•œ๊ฐ€์š”? ์ด ๋ฌธ์ œ๋Š” ๋” ์ด์ƒ ํ™œ๋™์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ "ํ† ๋ก ์šฉ" ๋˜๋Š” "์ข‹์€ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ"๋กœ ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์—ด์–ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๊ธฐ์—ฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์ตœ๊ทผ์— ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ™œ๋™์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๊ฑฐ๋‚˜ ์—ฌ์ „ํžˆ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ด€์‹ฌ์ด ํ•„์š”ํ•œ๊ฐ€์š”? ์ด ๋ฌธ์ œ๋Š” ๋” ์ด์ƒ ํ™œ๋™์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ "ํ† ๋ก ์šฉ" ๋˜๋Š” "์ข‹์€ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ"๋กœ ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์—ด์–ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๊ธฐ์—ฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค

๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๋ฅด ์ƒ˜. 12์›” 19์ผ 2020 ร  11:03, damialajogun [email protected] a
์—ํฌ๋ฆฌํŠธ :

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ™œ๋™์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ตœ๊ทผ์—. ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๊ฑฐ๋‚˜ ์—ฌ์ „ํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?
์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ด€์‹ฌ? ์ด ๋ฌธ์ œ๋Š” ๋” ์ด์ƒ ํ™œ๋™์ด ์—†์œผ๋ฉด ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ "ํ† ๋ก ์šฉ" ๋˜๋Š” "์ข‹์€ ์šฐ์„ "์œผ๋กœ ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ"๋ผ๊ณ  ํ‘œ์‹œํ•˜๊ณ  ์—ด์–ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—ฌํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/dooboolab/react-native-iap/issues/1040#issuecomment-748451922 ,
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AJ2B2AUIRMGWIHZSFYL6SWTSVR3AXANCNFSM4OSLGZSQ
.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰