4.4.8
0.61.5
iOS
await RNIap.requestPurchase(sku, false)
console.log('REQUEST OVER')
์ธ์๋ฅผ ์์ฒญํ์ธ์.
์๋๋ฐ์ค ํ ์คํฐ ๊ณ์ ์ ์ฌ์ฉํ๋ ์ฅ์น์์ ์๋ตํ๊ณ ์ ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ์ฅ์น๋ ์๋ฎฌ๋ ์ดํฐ์์๋ ์๋ตํ์ง ์๊ฑฐ๋ ํด๊ฒฐ๋์ง ์์ต๋๋ค. ์ฑ์ ๊ฒํ ํ๋ ๋์ Apple์ด BUY๋ฅผ ํญํ๋ ์ด์ ๋ก ๋ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ์ ๊ฑฐ๋ถํ๋ฉด ์๋ตํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
RNIap.getProducts(itemSkus)
์ ๋ํด์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ค์ ์ฅ์น ๋ฐ ์๋ฎฌ๋ ์ดํฐ
async componentDidMount() {
RNIap.getProducts(itemSkus)
.then((products) => {
this.setState({ products: products })
})
.catch((error) => {
console.log(error.message)
})
}
requestPurchase = async (sku) => {
try {
await RNIap.requestPurchase(sku, false)
console.log('REQUESTED OVER')
} catch (err) {
console.warn(err.code, err.message)
}
}
render() {
const { products } = this.state
return (
<View>
{products.map((p, i) => { return (
<TouchableWithoutFeedback onPress={() => this.requestPurchase(p.productId)}>
<Text> BUY </Text>
</TouchableWithoutFeedback> ) })}
</View>)
์ฌ๊ธฐ์์๋ ๋์ผํ์ง๋ง Android์์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ถ๊ฐํ์ฌ ์์ ํ์ ์ ์์ต๋๋ค.
const ๊ฒฐ๊ณผ = RNIap.initConnection()์ ๊ธฐ๋ค๋ฆฝ๋๋ค.
RNIap.consumeAllItemsAndroid()๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
console.log('๊ฒฐ๊ณผ', ๊ฒฐ๊ณผ);
componentDidMount ์์ ์ ;
๋์์ด ๋๋์ง ์๋ ค์ฃผ์ธ์
@hyochan ์ด์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ผ์ จ์ต๋๊น? iOS์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋งค์ฐ ์ค๋ง์ค๋ฝ๊ณ RNIap.requestPurchase๋ฅผ ํธ์ถํด๋ ์ฌ์ฉ์๊ฐ ๊ตฌ๋ ์กฐ๊ฑด์ ๋์ํ๋๋ก ์ ๋ํ๊ฑฐ๋ ๊ตฌ๋ ์ด ์ด๋ฏธ ํ์ฑํ๋์ด ์์์ ํ์ธํ๋ ๊ฒฝ๊ณ ์ ํจ๊ป ์๋ตํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ณผ๊ฑฐ ์ฑ ๊ฒํ ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. ์ฑ์ ๊ฐ์ ์ข ๋ฃํ๊ณ ๋ค์ ์๋ํ๋ฉด ๊ฐ๋ ์๋ํฉ๋๋ค. ์๋๋ฐ์ค๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฌธ์ ๊ฐ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@smarttouchtechnology initConnection
์ ํํ์
จ์ต๋๊น? ์ด๊ฒ์ 4.4.5
์์ ํ์ํฉ๋๋ค.
@smarttouchtechnology ์์ "๋ฌธ์ "๋ฅผ "ํด๊ฒฐ"ํ๋ ์๋์ ๋ต๋ณ์ ์ฝ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ;)
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๊ณ await RNIap.initConnection()
๋ฅผ componentDidMount
์ ์ถ๊ฐ ํ๋ผ๋ @Panda313 ์ ์์ด ํจ๊ณผ๊ฐ ์์์ต๋๋ค.
์ ๊ฐ์ค๋ฝ๊ฒ๋ ์ด๊ฒ์ ๋ ์ ๋ฌธ์ํ๋์ง ์์์ต๋๋ค ...
@Panda313 ... ์ฌ๊ณผ ๊ฑฐ์ ์ 1์ฃผ๊ฐ ์ ๋ชป ์ด๋ฃจ๋ ๋ฐค์ ๊ตฌํด์ฃผ์ จ์ด์
๋ ๋ง์ ์ฌ๋๋ค์ด ์ด ๋ฌธ์ ๋ฅผ ๊ฒช์ง ์๋๋ก ๋๊ตฐ๊ฐ ์ด๊ฒ์ ๋ฌธ์์ ์ถ๊ฐํ ์ ์์ต๋๊น? ์ถ๊ฐํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
ํธ์ง: ์ฌ๊ธฐ์ ์ถ๊ฐ๋์์ต๋๋ค. #1088.
์์ ๋กญ๊ฒ ๊ฒํ ํ์ญ์์ค(์ ๊ฐ ์ ๋๋ก ํ๋์ง ํ์ ํ ์ ์์ต๋๋ค.)
์ถ๊ฐํ์ฌ ์์ ํ์ ์ ์์ต๋๋ค.
const ๊ฒฐ๊ณผ = RNIap.initConnection()์ ๊ธฐ๋ค๋ฆฝ๋๋ค.
RNIap.consumeAllItemsAndroid()๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
console.log('๊ฒฐ๊ณผ', ๊ฒฐ๊ณผ);componentDidMount ์์ ์ ;
๋์์ด ๋๋์ง ์๋ ค์ฃผ์ธ์
iOS์ ๊ฒฝ์ฐ requestSubscription
์์ ์๋ต์ด ์์์ต๋๋ค. RNIap.requestSubscription
์์ await RNIap.initConnection();
๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ์๋ํ๋๋ฐ ํจ๊ณผ๊ฐ ์์์ต๋๋ค. ์ด์ ์ฑ ๋ฃจํธ์ ๋ฆฌ์ค๋์์ ๊ตฌ๋งค ๊ฐ์ฒด๋ฅผ ์์ ํ๊ณ ์์ต๋๋ค. ๋ํ ์ค๋ฅ ๋๋ ์ฑ๊ณต์ ์ธ ์๋ต์ผ๋ก ํด๊ฒฐ๋ ํ ์ฝ๋๋ฅผ ๋ ์๋๋ก ์งํํฉ๋๋ค.
์๋ ํ์ธ์, ์ต๊ทผ์ ์ด ๋ฌธ์ ์ ๋ํ ํ๋์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๊น? ์๋๋ฉด ์ฌ์ ํ ์ปค๋ฎค๋ํฐ์ ๊ด์ฌ์ด ํ์ํ๊ฐ์? ๋ ์ด์ ํ๋์ด ๋ฐ์ํ์ง ์์ผ๋ฉด ์ด ๋ฌธ์ ๊ฐ ์ข ๋ฃ๋ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ์ "ํ ๋ก ์ฉ" ๋๋ "์ข์ ์ฒซ ๋ฒ์งธ ๋ฌธ์ "๋ก ๋ ์ด๋ธ์ ์ง์ ํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด์ด ๋๊ฒ ์ต๋๋ค. ๊ทํ์ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ฅ๊ธฐ๊ฐ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํฉ๋๋ค. ์ด ๋ฌธ์ ๊ฐ ์ต์ ๋ฆด๋ฆฌ์ค์ ์ฌ์ ํ ์กด์ฌํ๋ ๊ฒฝ์ฐ ์ธ์ ๋ ์ง ์ต์ ์ ๋ณด๋ก ์ ๋ฌธ์ ๋ฅผ ์์ฑํ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๊ณ
await RNIap.initConnection()
๋ฅผcomponentDidMount
์ ์ถ๊ฐ ํ๋ผ๋ @Panda313 ์ ์์ด ํจ๊ณผ๊ฐ ์์์ต๋๋ค.์ ๊ฐ์ค๋ฝ๊ฒ๋ ์ด๊ฒ์ ๋ ์ ๋ฌธ์ํ๋์ง ์์์ต๋๋ค ...