React-native-iap: iOS рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдлрд╝рд░ре░ 2020  ┬╖  34рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dooboolab/react-native-iap

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

4.4.1 рд╣реИ

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

0.60.4

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

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

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

рдХрд┐рд╕реА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП finishTransactionIOS (рдЦрд░реАрдж) рдпрд╛ finishTransaction (рдЦрд░реАрдж) рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░, рд▓реЗрдирджреЗрди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдЧрд▓реЗ рд▓реЙрдиреНрдЪ рдкрд░ рдлрд┐рд░ рд╕реЗ рдРрдк рдкрд░ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдереА, рддреЛ рдореИрдВ рдЙрдореНрдореАрдж рдХрд░реВрдВрдЧрд╛ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╢реНрд░реЛрддрд╛ рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рд╡рд╛рдкрд╕реА рдХреА рдЬрд╛рдП рдпрд╛ рдлрд┐рд░ рдлрд┐рдирд┐рд╢рдЯреНрд░рд╛рдВрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд┐рд╕реА рдПрдХ рд╡рд╛рджреЗ рд╕реЗ, рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

Android рдареАрдХ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред

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

рдЬрдм рддрдХ рдХреНрд▓реАрдпрд░рдЯреНрд░рд╛рдВрд╕рдЖрдИрдУрдПрд╕ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рд╣рд░ рдПрдХ рд▓реЙрдиреНрдЪ рдкрд░ рд▓реЗрди-рджреЗрди рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрдиреНрдп рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реЛрддрд╛ рд╣реИред

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

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

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

  • рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдЙрддреНрдкрд╛рдж рдмрдирд╛рдПрдБред
  • рд╕рджрд╕реНрдпрддрд╛ рдЦрд░реАрджреЗрдВ
  • рдмреИрдХрдПрдВрдб рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдВ
  • рдЙрд╕ рд╕рджрд╕реНрдпрддрд╛ рдкрд░ finishTransactionIOS рдпрд╛ finishTransaction рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЗрд╕ рдмрд╡рд╛рд╕реАрд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рдореИрдВ рдХреБрдЫ рднреА рдХрд░реВрдВ, рд▓реЗрди-рджреЗрди рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЦрд░реАрдж рдлрд┐рд░ рд╕реЗ рд╣рд░ рдПрдХ рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП рдРрдк рдореЗрдВ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрддреА рд╣реИред рдХреЛрдИ рднреА рд╡рд┐рдЪрд╛рд░ рдЬреЛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдЬреЛ рдореИрдВ рд╕рдВрднрд╡рддрдГ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдпрд╛ рдЧрд▓рдд рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ?

тД╣ needs more info ЁЯУ▒ iOS ЁЯЩП help wanted ЁЯЪ╢ЁЯП╗ stale

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

@hyochan рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрджреНрдпрддрди? рд╣рдо рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдЕрдЯрдХреЗ рд╣реБрдП рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдРрдк рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИрдВред

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

рдореЗрд░реЗ рд╕рд╛рде рднреА рд╡рд╣реА рджрд┐рдХреНрдХрдд рд╣реИред

рдХреНрдпрд╛ рдЖрдк ackResult рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

          try {
            const ackResult = await finishTransaction(purchase);
            console.log('ackResult', ackResult);
          } catch (ackErr) {
            console.warn('ackErr', ackErr);
          }

@ рдпреЛрдЪрди
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ:
ackResult undefined

@ рдпреЛрдЪрди
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ:
ackResult undefined

рдореБрдЭреЗ рднреА

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ (рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕)ред

рдпрд╣ # 366 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ ios finishTransaction рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдХреНрдпрд╛ рдЖрдк рд╕рднреА # 366 рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреЗ рд╣реИрдВ?

рдпрд╣ # 366 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ ios finishTransaction рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдХреНрдпрд╛ рдЖрдк рд╕рднреА # 366 рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреЗ рд╣реИрдВ?

рдмрд╕ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдЪреВрдВрдХрд┐ # 366 рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдмрд┐рдирд╛ рдХреНрд▓реАрдпрд░рдЯреНрд░рд╛рдВрд╕рдлреИрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛?

@hyochan рдЬрдм рдореИрдВ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВ рдПрдХ рдЦрд░реАрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рд░реНрд╡рд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ (рдРрдкреНрдкрд▓) рд╕реЗ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдореЗрд░реЗ рдЧреНрд░рд╛рд╣рдХ рд╢реНрд░реЛрддрд╛ рдХреЛ рдЦрд░реАрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдФрд░ рд╕реВрдЪрдирд╛ рдорд┐рд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЗрди-рджреЗрди рдХреЗ рд╕рд╛рдеред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрдм рдЦрд░реАрдж рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдкрд┐рдЫрд▓реЗ рд▓реЗрдирджреЗрди рдХреЛ рдареАрдХ рд╕реЗ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░, рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ # 366 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде рдЦрд░реАрдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

`` `tsx
рдЙрдкрдпреЛрдЧ () () => {
рдЦрд░реАрджрдЙрдкрдпреЛрдЧ
async (рдЦрд░реАрдж: InAppPurchase | SubscriptionPurchase) => {
const рд░рд╕реАрдж = рдЦрд░реАрджред
рдЕрдЧрд░ (рд░рд╕реАрдж) {
рдкреНрд░рдпрддреНрди {
myBackendHandler рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВ ({
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛,
рдЦрд░реАрдж рдлрд░реЛрдЦреНрдд,
};
const result = рдкреНрд░рддреАрдХреНрд╖рд╛ RNIap.finishTransaction (рдЦрд░реАрдж, рдЕрд╕рддреНрдп);
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдкрд░рд┐рдгрд╛рдо', рдкрд░рд┐рдгрд╛рдо);
} рдХреИрдЪ (рдИ) {
// рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
}
}
}
);
рд╡рд╛рдкрд╕реА () => {
рдЕрдЧрд░ (рдЦрд░реАрджUdateSubscription.current) {
рдЦрд░реАрджрдбреБрдкреЗрдЯрд╕реНрдХреНрд░рд┐рдкреНрд╕ред Current.remove ();
рдЦрд░реАрджUpateatebubscription.current = null;
}
};
}, []];
`` ``

рд╣реЗ рдЯреАрдо, рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рд╕рднреА рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдореИрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдкреБрд░рд╛рдиреЗ рд▓реЗрдирджреЗрди рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдореЗрдВ # 366 рдХрд╛ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред

рдореЗрд░рд╛ usecase рд╣реИ

  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 1 рдЦрд░реАрдж рдФрд░ рдкреНрд░реАрдорд┐рдпрдо рд▓рд╛рдн рдХреЛ рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 1 рд╕рд╛рдЗрди рдЖрдЙрдЯ рдХрд░рддрд╛ рд╣реИ
  3. рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 2 рд╕рдВрдХреЗрдд

рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо:

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 1 рд╕реЗ рд▓реЗрдирджреЗрди рдЦрд░реАрдж рд╢реНрд░реЛрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 1 рд╕реЗ рд▓реЗрди-рджреЗрди рд╕рд╛рдлрд╝ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рднрд▓реЗ рд╣реА рдПрдХ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЦрд░рд╛рдм рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрди рдЗрди рдХрд┐рдпрд╛ рд╣реЛред

рдпрд╣ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдирд╛ рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕ рд▓рдВрдмреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж ...

рдореБрдЭреЗ рднреА

рдКрдкрд░ рдЬреИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛, рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕реЗ рд╣реА рджрд┐рдЦрддреА рд╣реИ, рдЬреИрд╕реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ / рдЖрдИрдЯреНрдпреВрдиреНрд╕ рдЕрдХрд╛рдЙрдВрдЯ, рд░рд┐рдмреВрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдбрд┐рд╕рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдПрдк рдХреЛ рд░рд┐рдЗрдВрд╕реНрдЯреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ finishTransaction рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ RNIapIos.m рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?
рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХреА рд╣реИ рдФрд░ рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЗрд╕рдХреЗ рд▓реЗрдирджреЗрди рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ clearTransaction рдпрд╛ finishTransactionWithIdentifier рд╡рд┐рдзрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ рдХрд┐рд╕реА рднреА рд▓реЙрдЧ рдХреЛ рдЕрдВрджрд░ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред

RCT_EXPORT_METHOD(clearTransaction) {
    NSArray *pendingTrans = [[SKPaymentQueue defaultQueue] transactions];
    NSLog(@"\n\n\n  ***  clear remaining Transactions. Call this before make a new transaction   \n\n.");
    for (int k = 0; k < pendingTrans.count; k++) {
        [[SKPaymentQueue defaultQueue] finishTransaction:pendingTrans[k]];
    }
-(void)finishTransactionWithIdentifier:(NSString *)transactionIdentifier {
    SKPaymentQueue *queue = [SKPaymentQueue defaultQueue];
    for(SKPaymentTransaction *transaction in queue.transactions) {
        if([transaction.transactionIdentifier isEqualToString:transactionIdentifier]) {
            [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
        }
    }
}

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдбрд┐рдмрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ ug рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрджреНрдпрддрди?

рдКрдкрд░, рдореИрдВ рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╣реИред рдпрд╣ рдЖрдИрдУрдПрд╕ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдореИрдВ рдЙрд╕реА рдЪреАрдЬ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реВрдВред
IAP рдХреА рдЦрд░реАрдж рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдХреЙрд▓ finishTransaction undefined рд░рд┐рдЯрд░реНрди рдХрд░рддреА рд╣реИред

// Finish transaction
const ackResult = await finishTransaction(purchase);
console.log("Ack result: ", ackResult); // Ack result: undefined

_Real рдбрд┐рд╡рд╛рдЗрд╕ "iPhone 6s" рдРрдк рд╕реНрдЯреЛрд░ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ред_

рдлрд┐рдирд┐рд╢рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ undefined рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ рдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдФрд░ рдЙрдореНрдореАрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЖрдИрдУрдПрд╕ рдкрд░ рднреА рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рди рддреЛ finishTransactionIOS рдФрд░ рди рд╣реА finishTransaction рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рд▓реЗрдирджреЗрди рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдРрдк рдЬрд╛рд░реА рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рд░рд╣рд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди?

@hyochan рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реВрдВ, рдореИрдВрдиреЗ finishTransaction рдФрд░ finishTransactionWithIdentifier рдореЗрдВ рдХреБрдЫ рд▓реЙрдЧ рдЬреЛрдбрд╝реЗ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ (рдЖрдИрдбреА рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)ред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ StoreKit рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд▓реЗрдирджреЗрди рдХреЛ рдЦрддреНрдо рдХрд░ рд░рд╣рд╛ рд╣реИ? рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдпрд╣рд╛рдБ рд╕реЗ рдХрд╣рд╛рдБ рдЬрд╛рдирд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛

рдХреНрдпрд╛ рдЖрдк рдРрдк рд╕реНрдЯреЛрд░ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рднреА рд╕рдВрднрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ? рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рддрдм рддрдХ рдереА рдЬрдм рддрдХ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░ рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдиреЗ рд╕рднреА рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рд╣реИ рдФрд░ 200 рдХреЗ рд╕рд╛рде рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рд╣реИред

@espenjanson рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдирд╣реАрдВ, рдореИрдВ рдирд╣реАрдВ рдерд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд▓ рд╣реА рдПрдХреНрд╕рдкреЛ рдХреЗ рдЗрдирдЪрд╛рд░реНрдЬ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рдЕрдм рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

@lachlanglen рдиреЗрд╡рд░рдорд╛рдЗрдВрдбред рдпрд╣ рд╕рд┐рд░реНрдл рднрд╛рдЧреНрдп (?) рдпрд╛ рдХреБрдЫ рдФрд░ рдХрд╛ рдПрдХ рд╣реА рдкреНрд░рд╣рд╛рд░ рдерд╛ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдлрд┐рд░ рд╕реЗ рд╣реИред рд╡рд╣реА рдХрд░рдиреЗ рдХреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдЪрд┐рдВрддрд┐рдд рд╣реИ рдХрд┐ рдПрдХреНрд╕рдкреЛ рд░реЗрдкреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдП рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдкрдбрд╝ рд░рд╣реА рдереА рдФрд░ рдпрд╣ рд╕рд╣реА рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд┐рдирд┐рд╢рдЯреНрд░реЗрдиреНрд╕ рдХреЙрд▓ рдХрд╛ рдорддрд▓рдм рдУрдмреНрдЬ-рд╕реА рдореЗрдВ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рдирд╣реАрдВ рд╣реИред
рдореИрдВрдиреЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рд╣реИрдВ рдФрд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИ (рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг, рд▓рдВрдмрд┐рдд рдЯреНрд░рд╛рдиреНрд╕рдЯреНрд░реИрдХреНрд╢рди рдЦреАрдВрдЪреЛ, рдЕрдЧрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ)

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

рдХреНрдпрд╛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
рдореИрдВрдиреЗ рдЗрд╕реЗ рдирдП рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рднреА TestFlight рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрднреА рднреА рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдореЗрд░рд╛ purchaseUpdateListener "рдкреБрд░рд╛рдирд╛" рд▓реЗрдирджреЗрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд░рд╣рддрд╛ рд╣реИред
рдореИрдВ finishTransaction(purchase,false) рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдСрдЯреЛрд░реЗрдВрд╡реЗрдмрд▓ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдХреЙрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо undefined ред

рдХреНрдпрд╛ рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдпрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

@ рдЬрд╝рддрд▓реЛрд░реА рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдПрдХ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛ред рдРрдк рд╕реНрдЯреЛрд░ StoreKit рдореЗрдВ рдирд╡реАрдиреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдирдИ рд░рд╕реАрдж рдбрд╛рд▓ рд░рд╣рд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЙрд╕ рд░рд╕реАрдж рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд▓реЗрдирджреЗрди рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

https://developer.apple.com/videos/play/wwdc2018/705/
https://developer.apple.com/videos/play/wwdc2020/10671

(рдПрдЪрдбреА рдХреНрд╡рд╛рд▓рд┐рдЯреА рдХреЗ рд▓рд┐рдП рд╕рдлрд╛рд░реА рдореЗрдВ рджреЗрдЦреЗрдВ)

@ziyoshams рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЙрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдореИрдВ рдереЛрдбрд╝рд╛ рд╕рд╛

рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдмрд╛рдд рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИред
рдЖрдк рдЬреЛ рд╡рд░реНрдгрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдореЗрд░реЗ рд▓рд┐рдП рддрд░реНрдХрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдпрд╣ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдереА, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдкрд╣реЗрд▓реА рд╣реИ:

рдЙрддреНрдкрд╛рдж рдП receipt validation рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдореИрдВ рдЙрддреНрдкрд╛рдж A рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд░рд╛рдирд╛ (рдкрд┐рдЫрд▓реЗ рджрд┐рди рд╕реЗ) рд▓реЗрдирджреЗрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬрдм рдореИрдВ рдРрдк рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ рдпрд╛ рдЕрдЧреНрд░рд╕рд░ рдХрд░рддрд╛ рд╣реВрдВред
рдлрд┐рд░ рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВ рдлрд┐рд░ рд╕реЗ рдРрдк рдХреЛ рдЕрдЧреНрд░рднреВрдорд┐ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЙрддреНрдкрд╛рдж рдП рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдПрдХ рдкреБрд░рд╛рдирд╛ (рд╢рд╛рдпрдж рдереЛрдбрд╝рд╛ рдирдпрд╛ рддреЛ рдкрд╣рд▓реЗ, рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ) рд▓реЗрдирджреЗрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВред
рдПрдХ рдФрд░ рдЕрдЧреНрд░рднреВрдорд┐ рдкрд░ рд╕рдВрднрд╡рддрдГ рдПрдХ рдФрд░ред

рдореИрдВ рдЙрдореНрдореАрдж рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЕрдЧрд░ рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрд╢рди рдЦрддреНрдо рд╣реЛрдиреЗ рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рд╕рдм рдПрдХ рдРрдк рдкрд░ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПред
рдХреНрдпрд╛ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рднреА рд╣реИ, рдпрд╛ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

@ рдЬрд╝рд╛рддрд▓реЙрд░реА рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣рд░ рд▓реЗрдирджреЗрди рдЙрд╕ рдХрддрд╛рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рднрд▓реЗ рд╣реА рд╡рд╣ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реЛред рдорд╛рд╕рд┐рдХ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╡рд╣ рд░рд╕реАрдж рд╣рд░ 5 рдорд┐рдирдЯ рдореЗрдВ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕реЗ рдЕрдЧрд░ рдЖрдк рдХреБрдЫ рдЦрд░реАрджрддреЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд▓реЗ рджрд┐рди рд╡рд╛рдкрд╕ рдРрдк рдкрд░ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ 5-6 рд░рд╕реАрджреЗрдВ рдорд┐рд▓реЗрдВрдЧреАред рдореИрдВ рдЙрди WWDC рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрдиреЗ рдХреА рдЕрддреНрдпрдзрд┐рдХ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рд╡реЗ рдХрд┐рддрдиреЗ рдорджрджрдЧрд╛рд░ рд╣реИрдВред

IOS рдкрд░ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрди-рджреЗрди рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдХрддрд╛рд░ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рдЬрдм рднреА рдРрдк рд▓реЙрдиреНрдЪ рд╣реЛрддрд╛ рд╣реИ рддреЛ рд░рд╕реАрдж рд╣рд░ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рдХреА рдУрд░ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рд░рд╕реАрдж рд╣реИ, рдлрд┐рд░ рд▓реЗрдирджреЗрди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдиреАрдЪреЗ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ

рдореИрдВрдиреЗ рдиреАрдЪреЗ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рдХреБрдЫ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ ...

`` `
рдЖрдпрд╛рдд RNIap, {
рдРрдк рдореЗрдВ рдЦрд░реАрджрд╛рд░реА,
рдЙрддреНрдкрд╛рдж,
рдЦрд░реАрдж,
рдЕрдВрд╢рджрд╛рди,
рд╕рджрд╕реНрдпрддрд╛ рдкрд░реНрдЪреЗ,
рдкрд░рд┐рд╖реНрдХрд░рдг
finishTransactionIOS,
рдЦрд░реАрджрд░реНрд░рд┐рд╕реНрдЯрд▓рд┐рд╕реНрдЯ,
рдЦрд░реАрджрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рд╕реВрдЪреА,
ClearTransactionIOS,
} 'рд░рд┐рдПрдХреНрдЯ-рджреЗрд╢реА-рдЖрдИрдПрдкреА' рд╕реЗ;

async рдШрдЯрдХрдбрд┐рдорд╛рдЙрдВрдЯ () {
const result = рдкреНрд░рддреАрдХреНрд╖рд╛ RNIap.initConnection ();
const рдЖрдЗрдЯрдо рд╢рдмреНрдж = Platform.select ({
рдПрдВрдбреНрд░реЙрдпрдб: [
рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдпрд╣ред рдкреНрд░реЙрдкреНрд╕, 'SubsStore.subscription.android_product_id', null)
],
ios: [
рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдпрд╣ред рдкреНрд░реЙрдкреНрд╕, 'subscribeStore.subscription.ios_product_id', null)
]
};

const рд╕рджрд╕реНрдпрддрд╛рдПрдБ = RNIap.getSubsults (itemSubs) рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ;
рдЦрд░реАрджрдЙрдкрдпреЛрдЧ
async (рдЦрд░реАрдж) => {
const рд░рд╕реАрдж = рдЦрд░реАрджред
рд╕рджрд╕реНрдпрддрд╛ рджреЗрдВ = {
subscribe_id: get (рдпрд╣ред рдкреНрд░реЙрдкреНрд╕, 'subscribeStore.subscription.id', null)
};
рдЕрдЧрд░ (Platform.OS === 'ios') {
рд╕рджрд╕реНрдпрддрд╛ = {
...рдЕрдВрд╢рджрд╛рди,
order_id: get (рдЦрд░реАрдж, 'transactionId', null),
рдЦрд░реАрдж_token: рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдЦрд░реАрдж, 'originalTransactionIdentifierIOS', рдЕрд╢рдХреНрдд),
рд░рд╕реАрдж: рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдЦрд░реАрдж, 'рд▓реЗрди-рджреЗрди рд░рд╕реАрдж', рдЕрд╢рдХреНрдд), // (рдЗрд╕реЗ рдкрд╛рда рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ)
рдУрдПрд╕: 'рдЖрдИрдУрдПрд╕'
}
} рдФрд░ рдЕрдЧрд░ (Platform.OS === 'android') {
const data = JSON.parse (рд░рд╕реАрдж);
рд╕рджрд╕реНрдпрддрд╛ = {
...рдЕрдВрд╢рджрд╛рди,
order_id: get (рдбреЗрдЯрд╛, 'orderId', null),
рдЦрд░реАрдж_рдЯреЛрдХрди: рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдбреЗрдЯрд╛, 'рдкрд░рдЪреЗрдЬрдЯрди', рдЕрд╢рдХреНрдд),
рдУрдПрд╕: 'рдПрдВрдбреНрд░реЙрдЗрдб'
}
}
рдкреНрд░рдпрддреНрди {
finishTransaction (рдЦрд░реАрдж, рдЧрд▓рдд); // рдпрд╣ рдпрд╣рд╛рдБ рдЕрд╕реНрдерд╛рдпреА рдХреЗ рд▓рд┐рдП рд╣реИ, рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рд╕рдлрд▓рддрд╛ рдкрд░ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
this.props.notificationStore.showToast ('рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВред рдХреГрдкрдпрд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ ...', 'рд╕рдлрд▓рддрд╛', 5000);
const resp = рдЗрд╕ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВред // рд╕рд░реНрд╡рд░ рдЕрдВрдд рдореЗрдВ рд▓реЗрдирджреЗрди рдХрд╛ рд╕рддреНрдпрд╛рдкрдиред
if (resp.success) {// рд╕рдлрд▓рддрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
this.props.userStore.setUser ({is_premium: 1});
this.props.navigation.replace ('FixFooter');
}
} рдХреИрдЪ (рддреНрд░реБрдЯрд┐) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ("onPurchase API ERROR:", рддреНрд░реБрдЯрд┐);
}
}
)

рдЦрд░реАрджрдЖрджрд░реНрд╢рд╕рдорд╛рд░реЛрд╣ = рдЦрд░реАрджрд▓рд╣рд░рдЦрд╛рдирд╛
async (рддреНрд░реБрдЯрд┐) => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдЦрд░реАрдж рддреНрд░реБрдЯрд┐:', рддреНрд░реБрдЯрд┐);
}
)
}

/ * onPurchase рдмрдЯрди * /
async onPurchase () {
рдкреНрд░рдпрддреНрди {
const request = рдкреНрд░рддреАрдХреНрд╖рд╛ RNIap.requestSubscription (Platform.OS === 'android'?
рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдпрд╣ред рдкреНрд░реЙрдкреНрд╕, 'subscribeStore.subscription.android_product_id', null):
рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдпрд╣ред рдкреНрд░реЙрдкреНрд╕, 'subscribeStore.subscription.ios_product_id', null)
} рдХреИрдЪ (рддреНрд░реБрдЯрд┐) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рддреНрд░реБрдЯрд┐:', рддреНрд░реБрдЯрд┐)
}
}

@ sufyan297 рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдХреЛрдб рд╕реЗ рд╕реНрдирд┐рдкреЗрдЯ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдПрдХ рд░рд╕реАрдж рд╕рддреНрдпрд╛рдкрди рдХреА рдмрд╛рдд рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди Apple рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмреЗрд╣рдж рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ

@ziyoshams рдХреНрдпрд╛ рдЖрдк рдПрдХреНрд╕рдкреЛ рдЖрдИрдПрдкреА рдореЙрдбреНрдпреВрд▓ рдлрд┐рдирд┐рд╢рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрд╢рдХреНрдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВ?

@bcbcbcbcbcl рдореИрдВ рдПрдХреНрд╕рдкреЛ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ

@hyochan рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрджреНрдпрддрди? рд╣рдо рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдЕрдЯрдХреЗ рд╣реБрдП рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдРрдк рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИрдВред

рдЕрд░реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдХреНрдпрд╛ рдореБрджреНрджрд╛ рдареАрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рдЕрднреА рднреА рд╕рдореБрджрд╛рдп рдХреЗ рдзреНрдпрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рди рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдмрдВрдж рд╣реЛ рд╕рдХрддреА рд╣реИред рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ "рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП" рдпрд╛ "рдЕрдЪреНрдЫрд╛ рдкрд╣рд▓рд╛ рдореБрджреНрджрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд▓реЗрдмрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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

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

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

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

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

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

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