React-native-iap: ๊ตฌ๋งค ํ•œ ์ƒํƒœ์™€์˜ ๊ฑฐ๋ž˜์— ๋Œ€ํ•œ ์ฝœ๋ฐฑ์ด ์—†์Šต๋‹ˆ๋‹ค.

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

react-native-iap ๋ฒ„์ „

2.4.7

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

0.57.8

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

iOS

์‹ค์ œ ํ–‰๋™

์ฒซ ๋ฒˆ์งธ IAP ํ…Œ์ŠคํŠธ์ด๊ณ  ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์•„์ง ๊ตฌ๋งค ํ•œ ์ œํ’ˆ (์ƒŒ๋“œ ๋ฐ•์Šค)์„ ๊ตฌ๋งคํ•˜๋ฉด "์ด ์ œํ’ˆ์„ ๋ชจ๋‘ ๊ตฌ๋งคํ•˜์…จ์Šต๋‹ˆ๋‹ค. ์ œํ’ˆ์ด ๋ณต์›๋ฉ๋‹ˆ๋‹ค."๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฝœ๋ฐฑ์ด๋‚˜ ๋ฐ˜ํ™˜์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ตฌ๋งค ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ œํ’ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก์ด ๋ณต์› ํ”„๋กœ์„ธ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์Šต๋‹ˆ๊นŒ?
์•„๋‹ˆ๋ฉด ์ด๋Ÿฐ ์‹์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋‚ด ์ฝ”๋“œ

   const purchase = await RNIap.buyProduct(identifier);
    this.setState({
      receipt: purchase.transactionReceipt
    });
this._saveProductIsBuyed()

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

์‹ค์ œ ์žฅ์น˜ (iPad)

๋„์™€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

โ“ question ๐Ÿ“ฑ iOS

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” @hyochan
๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋Œ€๋‹ต ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ ์„ค๋ช…ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์‚ฌ๋ก€ :
์‚ฌ์šฉ์ž๊ฐ€ ์ œํ’ˆ์„ ๊ตฌ๋งคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์˜ˆ : 'ํ”„๋ฆฌ๋ฏธ์—„'๊ณผ ๊ฐ™์€ ์ผํšŒ์„ฑ ๊ตฌ๋งค).

  1. ์‚ฌ์šฉ์ž๊ฐ€์ด ์ œํ’ˆ์„ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ (๋™์ผํ•œ Apple ID)์— ์•ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ๋‹ค๋ฅธ ์•ฑ์—์„œ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ œํ’ˆ์ด ๊ตฌ์ž… ํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š์Œ (์ œ๊ฐ€ ๋งํ–ˆ๋“ฏ์ด App-Start์—์„œ ์ด๋ฏธ ๊ตฌ์ž… ํ•œ ์ œํ’ˆ์„ ์š”์ฒญํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์•ฑ์—์„œ ๋ณธ ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค)

  1. ์‚ฌ์šฉ์ž๊ฐ€ "์ œํ’ˆ ๊ตฌ๋งค"๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. "alredy buyed"๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ๊ตฌ๋งค๊ฐ€ ๋ณต์›๋œ๋‹ค๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
    ํ•˜์ง€๋งŒ ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ์ œํ’ˆ์ด ๋ณต์›๋˜์—ˆ๋‹ค๋Š” ๋ฐ˜ํ’ˆ์ด ํ•„์š”ํ•˜์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ์–ป์ง€ ๋ชปํ•˜๊ณ  ๋‹ค์Œ console.log ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

const purchase = await RNIap.buyProduct(productIdentifier);
console.log('TEST', purchase); <= will not be shown

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

@Finneah iap feature ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. Restore purchase ๋Š” ์•ฑ์„ ๋‹ค์‹œ ์„ค์น˜ํ•  ๋•Œ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ ์ด๋ฏธ ๊ตฌ๋งค ํ•œ ์ œํ’ˆ์„ ๊ฐ€์ ธ ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ญ๋ชฉ์„ re-buy ํ•˜๋ ค๋ฉด consumable ๋กœ ์ œํ’ˆ์„ ๋งŒ๋“ค์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @hyochan
๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋Œ€๋‹ต ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ ์„ค๋ช…ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์‚ฌ๋ก€ :
์‚ฌ์šฉ์ž๊ฐ€ ์ œํ’ˆ์„ ๊ตฌ๋งคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์˜ˆ : 'ํ”„๋ฆฌ๋ฏธ์—„'๊ณผ ๊ฐ™์€ ์ผํšŒ์„ฑ ๊ตฌ๋งค).

  1. ์‚ฌ์šฉ์ž๊ฐ€์ด ์ œํ’ˆ์„ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ (๋™์ผํ•œ Apple ID)์— ์•ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ๋‹ค๋ฅธ ์•ฑ์—์„œ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ œํ’ˆ์ด ๊ตฌ์ž… ํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š์Œ (์ œ๊ฐ€ ๋งํ–ˆ๋“ฏ์ด App-Start์—์„œ ์ด๋ฏธ ๊ตฌ์ž… ํ•œ ์ œํ’ˆ์„ ์š”์ฒญํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์•ฑ์—์„œ ๋ณธ ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค)

  1. ์‚ฌ์šฉ์ž๊ฐ€ "์ œํ’ˆ ๊ตฌ๋งค"๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. "alredy buyed"๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ๊ตฌ๋งค๊ฐ€ ๋ณต์›๋œ๋‹ค๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
    ํ•˜์ง€๋งŒ ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ์ œํ’ˆ์ด ๋ณต์›๋˜์—ˆ๋‹ค๋Š” ๋ฐ˜ํ’ˆ์ด ํ•„์š”ํ•˜์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ์–ป์ง€ ๋ชปํ•˜๊ณ  ๋‹ค์Œ console.log ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

const purchase = await RNIap.buyProduct(productIdentifier);
console.log('TEST', purchase); <= will not be shown
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰