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()์ด ์ฌ์ ํ ์๋ํ์ง ์์ต๋๋ค. ๋ญ ๋ ํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ์ด. ๋์์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค! ์ฝ์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ฒ ์ต๋๊น ์ด ๋์?
๊ฒ ์ต๋๊น ์ด ๋์?
๋ถํํ๋ ๋์์ด๋์ง ์์์ต๋๋ค :(. 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
.