React-native-iap: RNIap.getProducts ios рдкрд░ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рджрд┐рд╕ре░ 2018  ┬╖  24рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dooboolab/react-native-iap

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдЖрдИрдПрдкреА рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг

"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдЖрдИрдПрдкреА": "^ 2.3.25"

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг

"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.57.4",

рдЬрд┐рди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдореЛрдВ рдореЗрдВ рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рд╣реБрдИ (IOS рдпрд╛ Android рдпрд╛ рджреЛрдиреЛрдВ?)

рдЖрдИрдУрдПрд╕

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

buyProduct рдХреЛ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (.then () рдХреЙрд▓ рдирд╣реАрдВ рд╣реИ),

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

buyProduct рдХрд┐рд╕реА рднреА рд╡рд╛рджреЗ рдХреЛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, .then () рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ, рд▓реЗрдХрд┐рди ios рдореЗрдВ рдирд╣реАрдВред

рдкрд░реАрдХреНрд╖рдгрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг (рдПрдореБрд▓реЗрдЯрд░? рд░рд┐рдпрд▓ рдбрд┐рд╡рд╛рдЗрд╕?)

рдЕрд╕рд▓реА рдбрд┐рд╡рд╛рдЗрд╕

рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо

onBuyNowPress() {
    this.setState({ loading: true });
    RNIap.getProducts(['product_id']).then(success => { 
       RNIap.buyProduct('product_id').then(purchase => { 
        console.log("Purchase >>", purchase)
        this.setState({
          loading: false,
          receipt: purchase.transactionReceipt, 
        });
        Alert.alert('Purchase Successful!');
        this.props.getPurchase();
       }).catch(err => { 
         console.log(err.code, err.message);
          this.setState({ loading: false });
          Alert.alert(err.message);
          if(err.message === "You already own this item.") {
            this.props.getPurchase();
          }
        }) 
      }).catch(error => { 
        alert(error); 
        this.setState({ loading: false });
      })
  }

рдЖрдИрдУрдПрд╕ рдореЗрдВ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрдкрд╛рдж рдЦрд░реАрджрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдореИрдВ рдЕрдм рдЦрд░реАрджрддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдкреЙрдкрдЕрдк рдорд┐рд▓рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдЙрддреНрдкрд╛рдж рдХреЛ рдЦрд░реАрджрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди .then () рдпрд╛ .catch () рдХреЙрд▓ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореИрдВрдиреЗ getAvailablePurchases () рд╡рд┐рдзрд┐ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЗрд╕рдХреА рд╣рдореЗрд╢рд╛ рд╡рд╛рдкрд╕реА []

ЁЯУ▒ iOS ЁЯЩП help wanted

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреНрдпрд╛ рдЖрдк 2.4.0-beta4 рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╕рднреА 24 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@LinusU рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @JJMoon рд╕рд╣реА рдерд╛ред рдореИрдВрдиреЗ рд╕рднреА async рдирд┐рдХрд╛рд▓ рджрд┐рдП рд╣реИрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдлрд┐рд░ рд╕реЗ рдЖ рдЧрдИ рд╣реИред рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ? @ ZeroCool00 рдХреНрдпрд╛ рдЖрдк рдЕрдм рдХреЗ рд▓рд┐рдП 2.3.24 рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░реЗрдВрдЧреЗ?

@ ZeroCool00 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреНрдпрд╛ рдЖрдк рд╣рдорд╛рд░реЗ рд▓рд┐рдП 2.3.26 рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ?

@hyochan рдореИрдВ рдЬрд▓реНрдж рд╣реА рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдБрдЧрд╛ .. рдФрд░ рдЖрдкрдХреЛ

@hyochan рдореИрдВрдиреЗ

@ ZeroCool00 рддреЛ рдпрд╣ рдПрдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЖрдкрдХреЛ unlink рдФрд░ рдкреБрдирдГ link рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@hyochan рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореИрдВ рдЕрдирд▓рд┐рдВрдХ рдФрд░ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

@ ZeroCool00 рдпрджрд┐ рдЖрдк рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╣реИрдВ, рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛- 2.3.24 рднреА рдЖрдЬрд╝рдорд╛рдПрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреБрдЫ рд╡рд┐рдиреНрдпрд╛рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@hyochan im on mac, рдФрд░ I рдЕрдирд▓рд┐рдВрдХ рдФрд░ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рд╕реЗ рдФрд░ рдлрд┐рд░ 2.3.24 рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ, рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд╕реЗрдЯрдЕрдк рдХрд░реЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ, рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, ios рдореЗрдВ рдпрд╣ рдЕрднреА рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред im рдкреЙрдкрдЕрдк рдФрд░ рдЙрддреНрдкрд╛рдж рднреА рдЦрд░реАрдж рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ?

рдХреНрдпрд╛ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ? im рдпрд╣рд╛рдБ рдЕрдЯрдХ, рд╡рд╣рд╛рдБ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦрд░реАрдж рд░рд╣рд╛ рд╣реИред

@JJMoon рдХреНрдпрд╛ рдЖрдк @ ZeroCool00 рдХреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ ZeroCool00 рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Alert рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ console рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХреНрдпреЛрдВрдХрд┐ ios рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдореВрд▓ Alert рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЦрд░реАрдж рд╕рдВрд╕рд╛рдзрд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред

@hyochan Plz рдпрд╣ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ .. рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА .. рдореИрдВ рдЕрд▓рд░реНрдЯ рдХреЛ рднреА рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореИрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдЬрд╛рдВрдЪрддрд╛ рд╣реВрдВ .. рдЗрд╕рдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЕрдкрдирд╛ рдРрдк рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдЕрдЯрдХ рдЧрдпрд╛ред рдореИрдВрдиреЗ рднреА рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХреА рдереА https://github.com/chirag04/react-native-in-app-utils

рдЗрд╕ рдкрд░рд┐рд╡рд╛рдж рдореЗрдВ рднреА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ .. рдХреНрд░рдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ рд▓реЗрдХрд┐рди рдХреЛрдИ рд╡рд╛рджрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИред

рдХреНрдпрд╛ рдХреЛрдИ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд╣рд╛рдБ рдореБрдЭреЗ рдИрд╡реЗрдВрдЯ рдХреЙрд▓рдмреИрдХ рдорд┐рд▓рддрд╛ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╡реЗрдВрдЯ рдХреЙрд▓рдмреИрдХ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдореИрдВ рд╕рд░реНрд╡рд░ рдПрдкрд┐ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВред

@ ZeroCool00 рдХреНрдпрд╛ рдЖрдк async рдФрд░ await рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@hyochan рдХреНрдпрд╛ рдЖрдк рдЕрдкрдирд╛ рдбреЗрдореЛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ .. рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ .. рдпрд╣ рдПрдХ рдмрдбрд╝реА рдорджрдж рд╣реЛрдЧреАред

async forIOS() {
    let purchase =  await RNIap.buyProduct('product_id');
    console.log("BannerPurchase >>",purchase);  **<--- THIS IS NOT GETTING CALL**
    if(purchase) {
      console.log("Purchase >>", purchase)
      this.props.getPurchase();
      this.setState({
        loading: false,
        receipt: purchase.transactionReceipt, 
      });
      console.log('Purchase succesfully')
    }
  }

@ рдзреНрдпрд╛рдиреЛ рдореЗ рдЖрдк рдЬреЛ рдХрд╣рддреЗ рд╣реИ рдЙрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣

рдЪреВрдВрдХрд┐ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧ рдЗрди рджрд┐рдиреЛрдВ рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХрд╛ рдорд╛рдорд▓рд╛ рдХрд╛рдлреА рдЕрдЬреАрдм рд╣реИред рдЬрдм рддрдХ рд╣рдорд╛рд░рд╛ рдЖрдкрдХрд╛ рдкреВрд░рд╛ рдХреЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛, рддрдм рддрдХ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрдард┐рди рд╣реЛрдЧрд╛ред

@hyochan @ ZeroCool00 рдЬреИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рд░рд╣рд╛
рдмрд╕ 2.3.26 рд╕реЗ 2.4.0-рдмреАрдЯрд╛ 3 (рдПрдХ рдЕрдирд▓рд┐рдВрдХ рдФрд░ рд▓рд┐рдВрдХ рдмрдирд╛рдпрд╛) рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛, рд╡рд╣реА рдХрд╣рд╛рдиреАред
рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рд▓реЙрдЧ рдореЗрдВ рдпрд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рдЕрд╕рд▓реА iPhone рдХрд╛ рдЙрдкрдпреЛрдЧ, xCode (рддрд╛рд░ рдЬреБрдбрд╝реЗ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред

[IAPInfoManager]: Update operation failed, error: Error Domain=SSErrorDomain Code=109 "Cannot connect to iTunes Store" UserInfo={NSLocalizedDescription=Cannot connect to iTunes Store, SSErrorHTTPStatusCodeKey=401}

рд▓реЗрдХрд┐рди рдЦрд░реАрдж рдХреЗ рд╕рд╛рде рдкреЙрдк-рдЕрдк рд╕рдлрд▓рддрд╛ рдХреА рдХрд╣рд╛рдиреА рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдереНрд░реЗрдб рдореЗрдВ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ :(
рдЖрдИрдУрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

try {
      let purchase = false;

      console.log('BEFORE BUY');
      if (Platform.OS === 'ios') {
        purchase = await RNIap.buyProduct(selected);
      } else {
        purchase = await RNIap.buySubscription(selected);
      }
      console.log('AFTER BUY');

      await RNIap.finishTransaction();
      console.info('purchase >', purchase);
      setSubscription({type: selected, purchaseData: purchase});
    } catch (err) {
      console.log(err); // TODO add something went wrong
    }

AFTER BUY
рджрд┐рдЦрд╛ рднреА рдирд╣реАрдВред Async / рдЗрдВрддрдЬрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╣реА рдХрд╣рд╛рдиреА, .then рд╡рд╛рджрд╛ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдеред

рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреНрдпрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдХреНрдпрд╛ рдЖрдк 2.4.0-beta4 рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@hyochan рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж a
рдореЗрд░реА рддрд░рдл рд╕реЗ рдорд╕рд▓рд╛ рд╣рд▓ рд╣реБрдЖред

@IsaevTimur рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛? рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

@hyochan рдпрд╣рд╛рдВ рдореЗрд░реЗ рдЕрдиреБрдЪрд┐рдд рдЦрд░реАрдж рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкреВрд░реНрдг рдХреЛрдб рд╣реИ

import React, { Component } from 'react';
import { View, ImageBackground, TouchableOpacity, Image, Alert, 
  ActivityIndicator, Platform } from 'react-native';
import {inapp, btnBuy, purple} from '../helper/constants';
import ImageResizeMode from 'react-native/Libraries/Image/ImageResizeMode'
import { connect } from 'react-redux';
import { Icon } from 'native-base';
import { Actions } from 'react-native-router-flux';
import * as RNIap from 'react-native-iap';
import { getItems, getPurchase, fetchCategory } from '../action';

const itemSkus = Platform.select({
  ios: [
    'max_asl_unlimited_access'
  ],
  android: [
    'max_asl_unlimited_access'
  ]
});

class Banner extends Component {

  constructor(props){
    super(props);
    this.onBuyNowPress = this.onBuyNowPress.bind(this);
    this.forAndroid = this.forAndroid.bind(this);
    this.forIOS = this.forIOS.bind(this);
  }

  state = {
    loading: false,
  }

  async componentDidMount() {
    try {
      const result = await RNIap.initConnection();
      console.log('result', result);
      this.props.getItems();
    } catch (err) {
      console.warn(err.code, err.message);
    }
}

  componentDidUpdate(prevProps) {
    if(prevProps.purchase !== this.props.purchase) {
      this.props.fetchCategory();
    } 
  }

  onBuyNowPress() {
    this.setState({ loading: true });
    RNIap.getProducts(itemSkus).then(success => { 
      if(Platform.OS == "ios") {
        this.forIOS()
      } else {
        this.forAndroid()
      }
    }).catch(error => { 
      alert(error); 
      this.setState({ loading: false });
    })
  }

  async forIOS() {
    console.log('BannerCall');
    try {
      const purchase = await RNIap.buyProduct('max_asl_unlimited_access');
      console.log("BannerPurchase >>",purchase);
      if(purchase) {
        this.props.getPurchase();
        this.setState({
          loading: false,
        });
        console.log('Purchase succesfully')
      }
    } catch (err) {
      console.log("BannerError >> ", err);
    }
  }

  forAndroid() {
    RNIap.buyProduct('max_asl_unlimited_access').then(purchase => { 
      this.props.getPurchase();
      this.setState({
        loading: false,
        receipt: purchase.transactionReceipt, 
      });
      console.log('Purchase succesfully')
      Alert.alert("Purchase succesfully")
     }).catch(err => { 
       console.log(err.code, err.message);
        this.setState({ loading: false });
        if(err.message === "You already own this item.") {
          this.props.getPurchase();
          Alert.alert("You already own this product, we are restoring your purchase.")
        }
      }) 
  }

  componentWillUnmount() {
    RNIap.endConnection();
  }

  renderSpinner() {
    if(this.state.loading) {
      return (
        <ActivityIndicator size="large" color="#F7CD52" />
      )
    }
    return null
}

  render() {
    const { container, bannerStyle, btnContainer, iconClose } = styles;
    return (
      <View style={container}>
          <ImageBackground source={inapp} style={bannerStyle} resizeMode={ImageResizeMode.contain}>
              <Icon name="close" style={iconClose} type="FontAwesome" onPress={() => {Actions.pop()}}/>
              <View style={btnContainer}>
                {this.renderSpinner()}
                <TouchableOpacity onPress={() => this.onBuyNowPress()}>
                    <Image source={btnBuy}  />
                </TouchableOpacity>
              </View>
          </ImageBackground>
      </View>
    );
  }
}


const styles = {
  container: {
    flex: 1,  
  },
  iconClose: {
    color: '#FFF',
    fontSize: 30,
    alignSelf: 'flex-end',
    margin: 20,
    fontWeight: 'bold',
  },
  bannerStyle: {
    flex: 1,
    width: '100%',
    height: '100%',
    backgroundColor: purple
  }, 
  btnBuy: {
    marginRight: 20,
    marginTop: 160,
    height: 85,
    width: 215,
  },
  btnContainer: {
    flex: 1,
    marginTop: 50,
    justifyContent: 'center',
    alignItems: 'center'
  }
};

function mapStateToProps({ purchase }) {
    return { purchase };
}

export default connect(mapStateToProps, { getItems, getPurchase, fetchCategory })(Banner);

@ ZeroCool00

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - 2.4.0-beta4ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк SANDBOX рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рд╡рд┐рдХрд╛рд╕ рдХреЗ рддрд╣рдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬрд┐рд╕реЗ iTunes рдХрдиреЗрдХреНрдЯ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣рд╛рдВ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ - https://appstoreconnect.apple.com/access/users , рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЗ рддрд╣рддред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА :)

@IsaevTimur
рд▓реЗрдХрд┐рди рдореЗрд░реА рдРрдк рд╕реНрдЯреЛрд░ рдЦрд░реАрдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рд╛рдВ 2.4.0-рдмреАрдЯрд╛ 4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдоред

рдпрд╣рд╛рдБ рдкреИрдХреЗрдЬ.рдЬреЙрди рдлрд╝рд╛рдЗрд▓ рдкрд░ рдореЗрд░реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реИ

"react-native-iap": "^2.4.0-beta4",

@hyochan i рдиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ .. рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдерд╛ рддреЛ рдореИрдВрдиреЗ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ await RNIap.finishTransaction(); рдореЗрдВ .then () рд╡рд┐рдзрд┐ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рд╛ред рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рд╕рдорд╛рдзрд╛рди рд╣реИ рдореБрдЭреЗ рд▓реЗрдирджреЗрди ( await RNIap.clearTransaction(); ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдорд╣рд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╕рдорд░реНрдерди n рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рджред

@ ZeroCool00 рд╕рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдмрдзрд╛рдИ !! рд╣рд╛рдБ, рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЖрдкрдХреА рддрд░рдл рд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЬреЛ рдЧрд▓рдд рдХрд┐рдпрд╛ рд╣реИ рдЙрд╕ рдкрд░ рдХреБрдЫ рдХрд░реНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреЛ рд▓реЛрдЧ рдПрдХ рд╣реА рдЪреАрдЬ рдкрд░ рдкреАрдбрд╝рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Symyon picture Symyon  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

safciplak picture safciplak  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lc3t35 picture lc3t35  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zoftify picture zoftify  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

fergalindez picture fergalindez  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ