React-native-iap: iTunes Store์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

react-native-iap ๋ฒ„์ „

4.3.0

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

0.61.5

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

iOS 13 ์ด์ƒ

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

์ œํ’ˆ์„ ๊ตฌ์ž…ํ•˜๊ฑฐ๋‚˜ ๋ณต์›ํ•ด์•ผํ•˜์ง€๋งŒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์•”ํ˜ธ:
์‹œํ—˜{
const ๊ตฌ๋งค = RNIap.getAvailablePurchases ();
if (๊ตฌ๋งค && purchases.length> 0) {
this.setState ({isLoading : false});
Alert.alert ( '๋ณต์› ์„ฑ๊ณต');
}๊ทธ๋ฐ–์—{
this.requestPurchase (itemSku);
}
} catch (err) {
Alert.alert (err.message);
}
์ด ํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ต์…˜์„ ํด๋ฆญํ•˜์ง€ ์•Š์€ ๋™์•ˆ "E_UNKNOWN์ด iTunes Store์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ๋‘˜ ๋‹ค ํ…Œ์ŠคํŠธํ–ˆ๊ณ  ํ–‰๋™์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

AppStore ๊ฒ€ํ† 

Wi-Fi์—์„œ iOS 13.2.3์„ ์‹คํ–‰ํ•˜๋Š” iPad์—์„œ ๊ฒ€ํ†  ํ•œ ๊ฒฐ๊ณผ ์ธ์•ฑ ๊ตฌ๋งค ์ œํ’ˆ์— ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฒ„๊ทธ๊ฐ€์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ ๊ตฌ๋งค๋ฅผ ์‹œ๋„ ํ•  ๋•Œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„

์„œ๋ฒ„์—์„œ ์˜์ˆ˜์ฆ์„ ํ™•์ธํ•  ๋•Œ ์„œ๋ฒ„๋Š” Apple์˜ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์˜์ˆ˜์ฆ์„๋ฐ›๋Š” ํ”„๋กœ๋•์…˜ ์„œ๋ช… ๋œ ์•ฑ์„ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ถŒ์žฅ๋˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„๊ฐ€ ํ•ญ์ƒ ํ”„๋กœ๋•์…˜ App Store์— ๋Œ€ํ•ด ์˜์ˆ˜์ฆ์„ ๋จผ์ € ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. "ํ”„๋กœ๋•์…˜์— ์‚ฌ์šฉ ๋œ ์ƒŒ๋“œ ๋ฐ•์Šค ์˜์ˆ˜์ฆ"์˜ค๋ฅ˜ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ๋Œ€์‹  ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์— ๋Œ€ํ•ด ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ž์›

App Store Connect ๊ฐœ๋ฐœ์ž ๋„์›€๋ง์—์„œ ๊ฐœ๋ฐœ ์ƒŒ๋“œ ๋ฐ•์Šค ํ™˜๊ฒฝ์—์„œ ์ธ์•ฑ ๊ตฌ๋งค ์ œํ’ˆ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜์ˆ˜์ฆ ํ™•์ธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์˜์ˆ˜์ฆ ํ™•์ธ์„ ์œ„ํ•ด ์–ด๋–ค URL์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ธ์•ฑ ๊ตฌ๋งค FAQ์—์„œ.

App Store Connect ๊ฐœ๋ฐœ์ž ๋„์›€๋ง์—์„œ ์˜์ˆ˜์ฆ ํ™•์ธ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋ด…๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฒจ๋ถ€ ๋œ ์Šคํฌ๋ฆฐ ์ƒท์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
Screen Shot 2019-12-13 at 2 27 06 AM

๐Ÿ“ฑ iOS ๐Ÿ™ help wanted ๐Ÿšถ๐Ÿป stale

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

๊ฐ™์€ ๋ฌธ์ œ ...

๊ฐ™์€ ์‚ฌ๋žŒ์ด ํ•ด๊ฒฐ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

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

๊ตฌ๋งค ์š”์ฒญ์—์„œ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

if (error.code === "E_USER_CANCELLED") { return; }

๋ฆฌ์Šค๋„ˆ์˜ ํ˜ธ์ถœ ๋ธ”๋ก์˜ ์ฒซ ๋ฒˆ์งธ ์ค„๋กœ. ๊ทธ๊ฒƒ์€ ๋‹จ์ˆœํžˆ ๊ทธ๋“ค์ด ์žˆ๋˜ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒํƒœ๋ฅผ ๋จผ์ € ๋ณ€๊ฒฝํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋Œ€์‹ ; ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค

if (error.code === "E_USER_CANCELLED") { 
  this.setState({ subscription: undefined, userCancelled: true, whateverElse: 'completed' }, () => { return; });

+1-์ด ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๊ฒƒ์€ ๊ทธ์˜ ์›๋ž˜ ๊ฒŒ์‹œ๋ฌผ์—์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

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

์ด ๋ฌธ์ œ ์ƒŒ๋“œ ๋ฐ•์Šค ์‚ฌ์šฉ์ž๋Š” Testflight ์•ฑ๋งŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. testfligt์—์„œ ๋‚ด ์•ฑ์„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์˜ ์ž‘๋™.

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

์ด ์˜ค๋ฅ˜๋Š” tesflight์—์„œ ์ง€์†์ ์œผ๋กœ ๋ฐœ์ƒํ•˜์ง€๋งŒ ํ”„๋กœ๋•์…˜์—์„œ๋Š” ๊ฐ„ํ—์ ์œผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์œผ์‹ญ๋‹ˆ๊นŒ?

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

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