React-native-iap: purchaseUpdatedListener๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœ๋˜๋Š” ๊ฒฝ์šฐ (๋•Œ๋กœ๋Š” 20 ํšŒ ์ด์ƒ)

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

react-native-iap ๋ฒ„์ „

"react-native-iap": "^ 4.5.3"

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

"๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ": "0.62.0"

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

iOS (์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์•„์ง ํ…Œ์ŠคํŠธ ๋จ)

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

purchaseUpdatedListener๋Š” ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋งˆ์šดํŠธ ๋œ ํšŸ์ˆ˜๋งŒํผ๋งŒ ํ˜ธ์ถœ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ํ–‰๋™

purchaseUpdatedListener๊ฐ€ ๋ช‡ ์ดˆ์— 20 ๋ฒˆ ํ˜ธ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•ฑ์„ ์—ด ๋•Œ๋งˆ๋‹ค ์ž์ฃผ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

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

์‹ค์ œ ์žฅ์น˜, ์ƒŒ๋“œ ๋ฐ•์Šค ํ™˜๊ฒฝ

ํ–‰๋™์„ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„

๋ฉ”์ธ ํŽ˜์ด์ง€์— ๋”ฐ๋ผ ์ง€์นจ์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

ํ˜„์žฌ componentDidMount ()์˜ ๋ฆฌ์Šค๋„ˆ์— purchaseUpdatedListener๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋” ๋‚ด ์•ฑ์„ ์—ด๋ฉด ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ finishTransaction์„ ํ˜ธ์ถœ ํ•œ txns์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฑธ ๋ณธ ์‚ฌ๋žŒ ์žˆ๋‚˜์š”?

๐Ÿ•ต๏ธโ€โ™‚๏ธ need more investigation ๐Ÿ™ help wanted ๐Ÿค– android

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

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž๋™ ๊ฐฑ์‹  ์ด๋ฒคํŠธ์—์„œ ๋‚˜๋Š” ์‹ค์ œ ์ž๋™ ๊ฐฑ์‹  ๊ตฌ๋…์„ ๋ฐ›๊ณ  ๋ช‡ ์ดˆ ํ›„์— purchaseUpdatedListener ์—์„œ 135 ๊ฐœ์˜ ๊ตฌ๋งค ๊ฐœ์ฒด๋ฅผ ๋ฐ›๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด ์ „์ฒด ๊ตฌ๋งค ๋‚ด์—ญ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์„ ์†Œ๋น„ํ•˜๊ธฐ ์œ„ํ•ด finishTransaction ๋ฐ finishTransactionIOS ๋ฅผ ๋ชจ๋‘ ํ˜ธ์ถœํ•˜๋ ค๊ณ ํ–ˆ์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์ž๋™ ๊ฐฑ์‹  ์ด๋ฒคํŠธ์—์„œ ํฐ ๊ฑฐ๋ž˜ ์ฒญํฌ๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค (136, 137, ...). ๊ฑฐ๋ž˜๋Š” ์ž๋™ ๊ฐฑ์‹  ๊ตฌ๋…์ž ์ผ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‚ด ์†Œ๋ชจํ’ˆ / ๋น„ ์†Œ๋ชจํ’ˆ ์ œํ’ˆ์ด ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

์ €๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ง€๋งŒ ๊ตฌ๋งค ํ๋ฆ„์„ ์‹ค์ œ๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

const { productId } = args
purchaseUpdatedListener(async (purchase) => {
    if (!purchase.transactionReceipt) {
        Alert("Error")
    }
    ...
})
purchaseErrorListener(error => {
    ...
})
await requestPurchase(productId, false)

ํ…Œ์ŠคํŠธ ์ œํ’ˆ์ด 4 ๊ฐœ ์žˆ๋Š”๋ฐ purchaseUpdatedListener 4 ๋ฒˆ ๋ฐ›์•˜๋Š”๋ฐ ๊ทธ์ค‘ ํ•˜๋‚˜์— ๋Œ€ํ•ด์„œ๋งŒ ๊ตฌ๋งค๋ฅผ ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์„ ์™„๋ฃŒํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์—ฌ๋Ÿฌ ํ˜ธ์ถœ

ํ•ญ๋ชฉ์ด ์ž๋™ ๊ฐฑ์‹ ๋ฉ๋‹ˆ๊นŒ? ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€๋Š” ์ƒŒ๋“œ ๋ฐ•์Šค์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์›”๊ฐ„ ๊ตฌ๋…์˜ ๊ฐฑ์‹  ๊ธฐ๊ฐ„์ด 5 ๋ถ„์— ๋ถˆ๊ณผํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์• ํ”Œ์€ ๊ฐฑ์‹  ํ•  ๋•Œ๋งˆ๋‹ค ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋‚ด๋ฏ€๋กœ ์•ฑ์ด 10 ๋ถ„ ๋™์•ˆ ๋‹ซํžˆ๋ฉด ์•ฑ์ด ์—ด๋ฆด ๋•Œ ๋ฐ›๊ฒŒ๋˜๋Š” 2 ๊ฐœ์˜ ์•Œ๋ฆผ์ž…๋‹ˆ๋‹ค.

๋ˆ„๊ตฌ๋‚˜ ์ด๊ฒƒ์ด ๊ตฌ๋งค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž๋™ ๊ฐฑ์‹ ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด ๊ตฌ๋งค๋Š” ์ผํšŒ์„ฑ ์†Œ๋ชจํ’ˆ์ž…๋‹ˆ๋‹ค

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž๋™ ๊ฐฑ์‹  ์ด๋ฒคํŠธ์—์„œ ๋‚˜๋Š” ์‹ค์ œ ์ž๋™ ๊ฐฑ์‹  ๊ตฌ๋…์„ ๋ฐ›๊ณ  ๋ช‡ ์ดˆ ํ›„์— purchaseUpdatedListener ์—์„œ 135 ๊ฐœ์˜ ๊ตฌ๋งค ๊ฐœ์ฒด๋ฅผ ๋ฐ›๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด ์ „์ฒด ๊ตฌ๋งค ๋‚ด์—ญ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์„ ์†Œ๋น„ํ•˜๊ธฐ ์œ„ํ•ด finishTransaction ๋ฐ finishTransactionIOS ๋ฅผ ๋ชจ๋‘ ํ˜ธ์ถœํ•˜๋ ค๊ณ ํ–ˆ์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์ž๋™ ๊ฐฑ์‹  ์ด๋ฒคํŠธ์—์„œ ํฐ ๊ฑฐ๋ž˜ ์ฒญํฌ๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค (136, 137, ...). ๊ฑฐ๋ž˜๋Š” ์ž๋™ ๊ฐฑ์‹  ๊ตฌ๋…์ž ์ผ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‚ด ์†Œ๋ชจํ’ˆ / ๋น„ ์†Œ๋ชจํ’ˆ ์ œํ’ˆ์ด ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ๋„ ๊ตฌ๋งค ๋‚ด์—ญ์˜ ๊ตฌ๋งค ํšŸ์ˆ˜์™€ ๋™์ผํ•œ ํšŸ์ˆ˜๋กœ ์ฒญ์ทจ์ž์—๊ฒŒ ์ „ํ™”๋ฅผ ๊ฑฐ๋Š” ๊ฒƒ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋…์ด ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ์—๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

iOS 14์—์„œ๋„ ๋น„์Šทํ•œ ๊ฒฝํ—˜์„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์•ฑ์ด ์ž๋™ ๊ฐฑ์‹  ๊ตฌ๋…์„ ํŒ๋งคํ•ฉ๋‹ˆ๋‹ค.
๋™์ผํ•œ ๊ตฌ๋…์„ ๋‹ค์‹œ ๊ตฌ๋งค ํ•œ ์ดํ›„๋กœ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋งํฌ๋Š”์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://developer.apple.com/forums/thread/659529

์ด ํฌ์ŠคํŠธ๋ฅผ ๋ณด์„ธ์š”
๋ฌธ์ œ๋Š” ์ด์ œ iOS์—์„œ finishTransaction ๋ฐ finishTransactionIOS๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ•ญ์ƒ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ํŠธ๋žœ์žญ์…˜์„ ์™„๋ฃŒ ํ•  ์ˆ˜์—†๊ณ  ๋ณด๋ฅ˜์ค‘์ธ ํŠธ๋žœ์žญ์…˜์— ๊ฐ‡ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฑ์„ ์—ด๋ฉด ๋ณด๋ฅ˜์ค‘์ธ ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜์ด purchaseUpdatedListener์—์„œ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ 20 ๋ฒˆ ์ด์ƒ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.
: (((๋ˆ„๊ตฐ๊ฐ€์ด plsssssss ์ˆ˜์ •

์ด ํฌ์ŠคํŠธ๋ฅผ ๋ณด์„ธ์š”
๋ฌธ์ œ๋Š” ์ด์ œ iOS์—์„œ finishTransaction ๋ฐ finishTransactionIOS๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ•ญ์ƒ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ํŠธ๋žœ์žญ์…˜์„ ์™„๋ฃŒ ํ•  ์ˆ˜์—†๊ณ  ๋ณด๋ฅ˜์ค‘์ธ ํŠธ๋žœ์žญ์…˜์— ๊ฐ‡ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฑ์„ ์—ด๋ฉด ๋ณด๋ฅ˜์ค‘์ธ ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜์ด purchaseUpdatedListener์—์„œ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ 20 ๋ฒˆ ์ด์ƒ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.
: (((๋ˆ„๊ตฐ๊ฐ€์ด plsssssss ์ˆ˜์ •

https://github.com/dooboolab/react-native-iap/issues/1160#issuecomment -716525603
์—ฌ๊ธฐ์— ๋‹ต๊ธ€์„ ์˜ฌ๋ ธ๋Š”๋ฐ ์‹ค์ œ๋กœ finishTransaction ๊ฐ€ ์•ฝ์†์„ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.
iOS ์ชฝ์— ๋กœ๊ทธ๋ฅผ ๋„ฃ์–ด ์‹ค์ œ๋กœ ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  if ๋ฌธ์ด ์ž…๋ ฅ๋˜๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

https://github.com/dooboolab/react-native-iap/issues/1172#issuecomment -721676878์—์„œ ์–ธ๊ธ‰ ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

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