React-native-iap: getAvailablePurchases рд╣рд░ рдмрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдЕрдЧре░ 2019  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dooboolab/react-native-iap

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

рей.рей.реп (рд▓реЗрдХрд┐рди рдпрд╣ рднреА рей.реж.реж рдФрд░ рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛ рдЕрдиреБрднрд╡)

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

0.59.9 рд╣реИ

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

iOS (Android рдкрд░ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛)

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

рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ getAvailablePurchases рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ
рд╣рд░ рдмрд╛рд░ рд╕рдорд╛рди рд▓рдВрдмрд╛рдИ

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

рд╣рд░ рдмрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд░рдгреА рдореИрдВ getAvailablePurchases рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ
рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ getAvailablePurchases рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд░рдгреА рд▓рдВрдмрд╛рдИ рдХрд╣рддрд╛ рд╣реВрдВ

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

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЦрд╛рддреЗ рдореЗрдВ 50+ рд▓реЗрдирджреЗрди рд╣реИред

handleOnPressRestore = async () => {
  return this.setState({ isLoadingRestorePurchases: true }, async () => {
    try {

      // Get the previous purchases of the current user
      const purchases = await RNIap.getAvailablePurchases();

      // Get the latest receipt from the purchases to validate
      const { transactionReceipt, productId, transactionDate } = this.getLatestPurchase(purchases);

      console.log(purchases.length, productId, transactionDate);

      // Validate the receipt on our server
      await this.props.validateSubscriptionReceipt(productId, transactionReceipt);

      // The validation result is handled in componentDidUpdate
    } catch (err) {
      throw err;
    } finally {
      this.setState({ isLoadingRestorePurchases: false });
    }
  });
}

getLatestPurchase = (purchases: RNIap.ProductPurchase[]): RNIap.ProductPurchase => {
  // First, sort the array, so the latest purchase is on top
  // https://github.com/dooboolab/react-native-iap/issues/532#issuecomment-503174711
  const sortedPurchases = purchases.sort((a, b) => b.transactionDate - a.transactionDate);

  const purchase = sortedPurchases[0];

  return purchase;
}

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЗ рд╕рд╛рде, рдЬрдм рдореИрдВ "рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдЦрд░реАрдж" рджрдмрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рд╣рд░ рдмрд╛рд░ рдЕрд▓рдЧ рд▓реЙрдЧ рдорд┐рд▓рддреЗ рд╣реИрдВ:

рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЖрдиреЗ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмреАрдЪ рдореЗрдВ рдПрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде "рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдЦрд░реАрдж" рдХреЛ 6 рдмрд╛рд░ рджрдмрд╛рдПрдВ:

// purchases.length, productId, transactionDate
9 "com.app.sub" 1565182529000
21 "com.app.sub" 1565181329000
22 "com.app.sub" 1565183001000
42 "com.app.sub" 1565183001000
53 "com.app.sub" 1565182529000
55 "com.app.sub" 1565183001000
15 "com.app.sub" 1565182529000

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рд░рдгреА рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рд╣реЛрдЧреА, рд╣реИ рдирд╛? рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

getAvailablePurchases() рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЗрд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ

ЁЯУ▒ iOS ЁЯЩП help wanted ЁЯЪ╢ЁЯП╗ stale

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

рдореИрдВрдиреЗ рд╕рднреА рд▓реЗрдирджреЗрди рдкрд░ рдПрдХ рд▓реВрдк рднреА рдЪрд▓рд╛рдпрд╛, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлрд┐рдирд┐рд╢рдЯреНрд░рд╛рдВрд╕рдЖрдИрдУрдПрд╕ рдХреЗ рд╕рд╛рде рд╣рдЯрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ред рдореЗрд░реЗ рд▓реЗрди-рджреЗрди рд╕реНрд╡рддрдГ-рдирд╡реАрдиреАрдХрд░рдг рд╕рджрд╕реНрдпрддрд╛ рд╣реИрдВред

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

рдореИрдВ рдпрд╣ рднреА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрддрд░рдирд╛рдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдореМрдХрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рд╡реИрдз рд░рд╕реАрдж рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ рдпрд╣ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдПрдкреНрдкрд▓ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдПрдХ рдореБрджреНрджреЗ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╕рд┐рд░реНрдл restoreCompletedTransactions() рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╡рд╛рдкрд╕ рджреЗрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ getPurchaseHistory() рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдореЗрд░реЗ рдРрдк рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рдЦрд░реАрджрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рд╕рджрд╕реНрдпрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ iap рдбреЙрдХреНрд╕ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, getAvailablePurchases() рдЙрдкрднреЛрдЧреНрдп рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдПрдХ рд╕рджрд╕реНрдпрддрд╛ "рдЙрдкрднреЛрдЬреНрдп" рдпрд╛ "рдЧреИрд░-рдЙрдкрднреЛрдЬреНрдп" рдЙрддреНрдкрд╛рдж рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ "рдСрдЯреЛ-рдЕрдХреНрд╖рдп рд╕рджрд╕реНрдпрддрд╛" рд╣реИ рдЗрд╕рд▓рд┐рдП getPurchaseHistory() рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

Screenshot 2019-08-16 at 18 11 13

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐PurchaseHistory () рдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд░рдгреА рд▓рдВрдмрд╛рдИ рднреА рджреАред рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рдЬреИрд╕реА рд╕реНрдерд┐рддрд┐ рдиреЗ рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред рдЕрдВрдд рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреЛрдИ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рдерд╛, рдПрдХ рдмрд╛рд░ рдХрд┐рд╕реА рднреА рд▓реЗрдирджреЗрди рдХреА рд░рд╕реАрдж рдХреЛ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, Apple рджреНрд╡рд╛рд░рд╛ latest_receipt_info рд╕рд░рдгреА рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡реИрд╕реЗ рднреА рдпрд╣ рд╕рдм рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред

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

Ex:
1 - рдореИрдВрдиреЗ рдЕрдХрд╛рдЙрдВрдЯ [email protected] рдХреЗ рд╕рд╛рде рдЦрд░реАрджрд╛рд░реА рдХреА
2 - Apple id рдХреЛ [email protected] рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛
3 - getAvailablePurchases рдиреЗ [email protected] рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде рдХреА рдЧрдИ рдЦрд░реАрджрд╛рд░реА рдХрд╛ рд▓реЗрдирджреЗрди рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛ рджрд┐рдпрд╛

рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓рд╛ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдбрд┐рд╡рд╛рдЗрд╕ (рдлрд╝реИрдХреНрдЯрд░реА рд░реАрд╕реЗрдЯ) рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХреЛ getPurchaseHistory() рдФрд░ getAvailablePurchases рд░реИрдВрдбрдо рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реВрдВред

рдЦрд░реАрдж рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрдкрд▓ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ:

"Users restore transactions to maintain access to content they've already purchased. For example, when they upgrade to a new phone, they don't lose all of the items they purchased on the old phone. Include some mechanism in your app to let the user restore their purchases, such as a Restore Purchases button."

@ Ssg-luke рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ restoreCompletedTransactions рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ Apple рдбреЗрд╡рд▓рдкрд░ рдлрд╝реЛрд░рдо рд╡рд┐рд╖рдп рдорд┐рд▓рд╛ред

https://forums.developer.apple.com/thread/115242

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ:

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХрдИ рд▓реЗрдирджреЗрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдРрдк рдиреЗ рдЕрднреА рддрдХ рдлрд┐рдирд┐рд╢рдЯреНрд░рд╛рдВрд╕рдХреНрд╢рди рдирд╣реАрдВ рдХрд╣рд╛ рд╣реИред
https://forums.developer.apple.com/thread/115242#thread -post-355444

рдореЗрд░реЗ рдкрд╛рд╕ рдЙрд╕реА рдЙрдкрдХрд░рдг рдкрд░ рдЕрдиреНрдп рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЦрд╛рддреЗ рд╣реИрдВред рддреЛ рдХреНрдпрд╛ рдпрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЦрд╛рддреЛрдВ рдХрд╛ рд▓реЗрди-рджреЗрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд╣реА рдЙрдкрдХрд░рдг рдкрд░, рдмрд╕ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ "рд╕рдорд╛рдкреНрдд" рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ?

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВрдиреЗ рд╕рднреА рд▓реЗрдирджреЗрди рдкрд░ рдПрдХ рд▓реВрдк рдЪрд▓рд╛рдпрд╛, рдФрд░ рдЙрди рд╕рднреА рдкрд░ finishTransactionIOS рдХрд╛ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рджреВрд░ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдкрдбрд╝рд╛ рдпрд╛ getAvailablePurchases() рдХрд╛ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓рд╛ ... рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдирдП рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЦрд╛рддреЗ рдореЗрдВ рд╣реВрдВ рдФрд░ рд▓реЗрдирджреЗрди рдПрдХ рдкреБрд░рд╛рдиреЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЦрд╛рддреЗ рд╕реЗ рд╣реИрдВ?

рдпрд╣ рднреА рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ @fcandiani рдХреНрдпрд╛ рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐PurchaseHistory () рдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд░рдгреА рд▓рдВрдмрд╛рдИ рднреА рджреАред рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рдЬреИрд╕реА рд╕реНрдерд┐рддрд┐ рдиреЗ рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред рдЕрдВрдд рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреЛрдИ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рдерд╛, рдПрдХ рдмрд╛рд░ рдХрд┐рд╕реА рднреА рд▓реЗрди-рджреЗрди рд░рд╕реАрдж рдХреЛ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рднреА рдкреНрд░рд╛рдкреНрддрд┐рдпреЛрдВ рдХреЛ Apple рджреНрд╡рд╛рд░рд╛ latest_receipt_info рд╕рд░рдгреА рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

@ Ssg-luke рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдРрд╕рд╛ рд╣реА рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рд╕рднреА рд▓реЗрдирджреЗрди рдкрд░ рдПрдХ рд▓реВрдк рднреА рдЪрд▓рд╛рдпрд╛, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлрд┐рдирд┐рд╢рдЯреНрд░рд╛рдВрд╕рдЖрдИрдУрдПрд╕ рдХреЗ рд╕рд╛рде рд╣рдЯрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ред рдореЗрд░реЗ рд▓реЗрди-рджреЗрди рд╕реНрд╡рддрдГ-рдирд╡реАрдиреАрдХрд░рдг рд╕рджрд╕реНрдпрддрд╛ рд╣реИрдВред

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

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

3.5.9 рд╣реИ

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

0.60.5

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

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

  • рд╕рдорд╛рди рдХреЛрдб Android рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрдкрд╛рджрди рдореЗрдВ

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

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рдмрд╛рд░ рд╕рджрд╕реНрдпрддрд╛ рд▓реА , getAvailablePurchases рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдЦрд░реАрдж рд╡рд╛рдкрд╕ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП

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

getAvailablePurchases рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЦрд░реАрдж рд╡рд╛рдкрд╕ рдЖ рд░рд╣реА рд╣реИ,

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

рддрд╛рдЬрд╛ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде рдЕрд╕рд▓реА рдбрд┐рд╡рд╛рдЗрд╕ред

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

  • Https://appstoreconnect.apple.com/access/testers рдкрд░ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЯреЗрд╕реНрдЯ рдпреВрдЬрд░ рдмрдирд╛рдПрдВ
  • Xcode рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ
  • getAvailablePurchases рдХреЙрд▓ рдХрд░реЗрдВ, рдХреЛрдИ рдЦрд░реАрджрд╛рд░реА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд)
  • рдХреБрдЫ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ
  • рдореЗрд░рд╛ purchaseUpdatedListener рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ RNIap.finishTransactionIOS(subscription.transactionId); рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдХрд┐ undefined (рдЬреИрд╕рд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдореНрдореАрдж рд╣реИ)
  • getAvailablePurchases рдХреЙрд▓ рдХрд░реЗрдВ, рдПрдХ рдЦрд░реАрдж рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд)
  • рд░реАрд▓реЛрдбреЗрдб рдбреА рдРрдк
  • getAvailablePurchases рдХреЙрд▓ рдХрд░реЗрдВ, рджреЛ рдЦрд░реАрджрд╛рд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд╣рд░ рдПрдХ рдЕрд▓рдЧ transactionId
{
   originalTransactionDateIOS: 1571144840000
   originalTransactionIdentifierIOS: "1000000579413333"
   productId: "io.appmasters.lowcarb.development"
   transactionDate: 1571145019000
   transactionId: "1000000579415509"
   transactionReceipt: "MIIVnQYJKoZIhvcN..."
},
{
   originalTransactionDateIOS: 1571144840000
   originalTransactionIdentifierIOS: "1000000579413333"
   productId: "io.appmasters.lowcarb.development"
   transactionDate: 1571144839000
   transactionId: "1000000579416705"
   transactionReceipt: "MIIVnQYJKoZIhvcN...."
}
  • рдлрд┐рд░ рд╕реЗ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ рдРрдк
  • getAvailablePurchases рдХреЙрд▓ рдХрд░реЗрдВ, рддреАрди рдЦрд░реАрджрд╛рд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд╣рд░ рдПрдХ рдЕрд▓рдЧ transactionId (рдкрд░рд┐рдгрд╛рдо рд╕реЗ рд╕рдорд╛рди рдирд╣реАрдВ):
{
   originalTransactionDateIOS: 1571144840000
   originalTransactionIdentifierIOS: "1000000579413333"
   productId: "io.appmasters.lowcarb.development"
   transactionDate: 1571145739000
   transactionId: "1000000579423546"
   transactionReceipt: "MIIb1AYJKoZIhvcN..."
},{
   originalTransactionDateIOS: 1571144840000
   originalTransactionIdentifierIOS: "1000000579413333"
   productId: "io.appmasters.lowcarb.development"
   transactionDate: 1571145019000
   transactionId: "1000000579426352"
   transactionReceipt: "MIIb1AYJKoZI..."
},{
   originalTransactionDateIOS: 1571144840000
   originalTransactionIdentifierIOS: "1000000579413333"
   productId: "io.appmasters.lowcarb.development"
   transactionDate: 1571144839000
   transactionId: "1000000579426353"
   transactionReceipt: "MIIb1AYJKoZIhvcN..."
}
  • рдлрд┐рд░ рд╕реЗ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ рдРрдк
  • getAvailablePurchases рдХреЙрд▓ рдХрд░реЗрдВ, рдЪрд╛рд░ рдЦрд░реАрджрд╛рд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд╣рд░ рдПрдХ рдЕрд▓рдЧ transactionId (рдкрд┐рдЫрд▓реЗ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рд╕рдорд╛рди рдирд╣реАрдВ) ...

рдпрд╣ рд╕рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рдореИрдВрдиреЗ рдбреЙрдХреНрд╕ рдкрд░ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред

рдореИрдВ рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред

getAvaialblePurchases () рдореЗрд░реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдкрд░реАрдХреНрд╖рдг рдЦрд╛рддреЗ рдкрд░ 150+ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ getAvailablePurchases () рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЕрдВрддрд┐рдо рдЦрд░реАрдж рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рднреА рд╕реНрдЯреЛрд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирдП рдлреЛрди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрднреА рднреА рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдпреВрдЬрд░ рдЖрдИрдбреА рдФрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (рдЖрдИрдУрдПрд╕ рдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб) рд╕реЗ рдЬреБрдбрд╝реЗ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдВрддрд┐рдо рдЦрд░реАрдж рдХрд░реЗрдВрдЧреЗред рдХреЙрд▓ рдХрд░рдирд╛ getAvailablePurchases () рдПрдХ рдорд┐рдирдЯ рдХреЗ рдХрд░реАрдм рд▓реЗ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХрднреА-рдХрднреА рдЗрд╕ рдЯреНрд░рд┐рдЧрд░рд┐рдВрдЧ рдХреЙрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╢реНрд░реЛрддрд╛ рдЕрдкрдиреА рдЦрд░реАрджрд╛рд░реА рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рдордиреЗ рдЕрдкрдиреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ:
1) рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ:
a) рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд╡реИрдз рдЕрдВрддрд┐рдо рдЦрд░реАрдж рд╣реИред
b) рдпрджрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрдИ рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рд╣реИ, рддреЛ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ DB рдореЗрдВ рдХреЛрдИ рд╕реНрдерд╛рдиреАрдп рд╕рд╣реЗрдЬреА рдЧрдИ рдЦрд░реАрджрд╛рд░реА рд╣реИ рдпрд╛ рдирд╣реАрдВ
c) рдпрджрд┐ рдХреЛрдИ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдХреЛрдИ рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рджреГрд╢реНрдп рджрд┐рдЦрд╛рдПрдВред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рд╣рдо getAvailablePurchases () рдХреЛ рдХреЙрд▓ рдХрд░ рд░рд╣реЗ рдереЗ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рдереЗ рдХрд┐ рдХреНрдпрд╛ рдЕрдВрддрд┐рдо рдЦрд░реАрдж рдЕрднреА рднреА рд╡реИрдз рдереАред рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдпрд╣ рджреВрд╕рд░реЛрдВ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдирд╣реАрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рд╣рдо 59 рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдПрдХ рдФрд░ рджрд░реНрдж рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдирд┐рдкрдЯрдирд╛ рд╣реИред

@ramakula рдФрд░ рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреА рд╕рджрд╕реНрдпрддрд╛ рд░рджреНрдж рдХрд░рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдкрдиреЗ рдмрддрд╛рдпрд╛ рдерд╛, рдЖрдк рдЕрдВрддрд┐рдо рддрд┐рдерд┐ рддрдХ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд╕рджрд╕реНрдпрддрд╛ рд░рдЦреЗрдВрдЧреЗ рдФрд░ "рдЦрд░реАрдж" рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЕрдм рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

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

рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ред рдпрджрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдк-рдЯреВ-рдбреЗрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

getAvaialblePurchases () рдореЗрд░реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдкрд░реАрдХреНрд╖рдг рдЦрд╛рддреЗ рдкрд░ 150+ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ getAvailablePurchases () рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЕрдВрддрд┐рдо рдЦрд░реАрдж рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рднреА рд╕реНрдЯреЛрд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирдП рдлреЛрди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрднреА рднреА рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдпреВрдЬрд░ рдЖрдИрдбреА рдФрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (рдЖрдИрдУрдПрд╕ рдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб) рд╕реЗ рдЬреБрдбрд╝реЗ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдВрддрд┐рдо рдЦрд░реАрдж рдХрд░реЗрдВрдЧреЗред рдХреЙрд▓ рдХрд░рдирд╛ getAvailablePurchases () рдПрдХ рдорд┐рдирдЯ рдХреЗ рдХрд░реАрдм рд▓реЗ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХрднреА-рдХрднреА рдЗрд╕ рдЯреНрд░рд┐рдЧрд░рд┐рдВрдЧ рдХреЙрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╢реНрд░реЛрддрд╛ рдЕрдкрдиреА рдЦрд░реАрджрд╛рд░реА рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рдордиреЗ рдЕрдкрдиреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

  1. рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ:
    a) рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд╡реИрдз рдЕрдВрддрд┐рдо рдЦрд░реАрдж рд╣реИред
    b) рдпрджрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрдИ рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рд╣реИ, рддреЛ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ DB рдореЗрдВ рдХреЛрдИ рд╕реНрдерд╛рдиреАрдп рд╕рд╣реЗрдЬреА рдЧрдИ рдЦрд░реАрджрд╛рд░реА рд╣реИ рдпрд╛ рдирд╣реАрдВ
    c) рдпрджрд┐ рдХреЛрдИ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдХреЛрдИ рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рджреГрд╢реНрдп рджрд┐рдЦрд╛рдПрдВред
    рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рд╣рдо getAvailablePurchases () рдХреЛ рдХреЙрд▓ рдХрд░ рд░рд╣реЗ рдереЗ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рдереЗ рдХрд┐ рдХреНрдпрд╛ рдЕрдВрддрд┐рдо рдЦрд░реАрдж рдЕрднреА рднреА рд╡реИрдз рдереАред рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдпрд╣ рджреВрд╕рд░реЛрдВ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдирд╣реАрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рд╣рдо 59 рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдПрдХ рдФрд░ рджрд░реНрдж рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдирд┐рдкрдЯрдирд╛ рд╣реИред

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рд╣рдо рд░рд╕реАрдж рд╕реЗ рдирд╡реАрдирддрдо рдЦрд░реАрдж рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдХреЗ, рдкреБрд░рд╛рдиреЗ-рдкреБрд░рд╛рдиреЗ рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде: рд╕рдЪ рд╣реИ рдХрд┐ рд╣рдо рдирд╡реАрдирддрдо рд╕рджрд╕реНрдпрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдХреЗрд╡рд▓ рдСрдЯреЛ-рдирд╡реАрдХрд░рдгреАрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП)ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдЯреЛ-рдЕрдХреНрд╖рдп рд╕рджрд╕реНрдпрддрд╛ рдЦрд░реАрдж рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЖрджрд░реНрд╢ рддрд░реАрдХрд╛ рд╣реИред

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

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

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

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

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

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

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