React-native-iap: рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдмрд╛рдж рдХрдИ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ Android рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

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

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

"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.55.4"
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдЖрдИрдПрдкреА": "^ 2.3.2"

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

рдПрдВрдбреНрд░реЙрдпрдб

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

рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░реЗрдВ, рдореБрдЭреЗ рдЗрд╕реЗ рддреБрд░рдВрдд рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА + 2k рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ

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

рдХрдИ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд░реИрдиреИрдк рдХреА рд╡рдЬрд╣ рд╕реЗ рдРрдк рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд▓реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИ:
java.lang.RuntimeException:

  1. com.facebook.react.bridge.CallbackImpl.invoke (CallbackImpl.java:28) рдкрд░
  2. com.facebook.react.bridge.romiseImpl.resolve (PromiseImpl.java:30)
  3. com.dooboolab.RNIap.RNIapModule $ 4.run (RNIapModule.java:154) рдкрд░
  4. com.dooboolab.RNIap.RNIapModule рдкрд░ $ 3.onBillingSetupFinished (RNIapModule.java:123)
  5. com.android.billingclient.api.BillingClientImpl рдкрд░ $ BillingServiceConnection.onServiceConnected (BillingClientImpl.java:903)
  6. android.app.LoadedApk рдкрд░ $ ServiceDispatcher.doConnected (LoadedApk.java.1264)
  7. android.app.LoadedApk рдкрд░ $ ServiceDispatcher $ RunConnection.run (LoadedApk.java:1281)
  8. android.os.Handler.handleCallback (рд╣реИрдВрдбрд▓рд░.рдЬрд╡рд╛:815) рдкрд░
  9. android.os.Handler.dispatchMessage (рд╣реИрдВрдбрд▓рд░.рдЬрд╡рд╛:104) рдкрд░
  10. android.os.Looper.loop (Looper.java:207) рдкрд░
  11. android.app.ActivityThread.main (ActivityThread.java and692) рдкрд░
  12. java.lang.reflect.Method.invoke (рдореВрд▓ рд╡рд┐рдзрд┐) рдкрд░
  13. com.android.internal.os.ZygoteInit рдкрд░ $ MethodAndArgsCaller.run (ZygoteInit.java:908)
  14. com.android.internal.os.ZygoteInit.main (ZygoteInit.java:769) рдкрд░

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

рдпрд╣рд╛рдБ рдкреНрд▓реЗ рдХрдВрд╕реЛрд▓ рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ:
https://ibb.co/gDxZQA

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

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдореИрдВрдиреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд░реИрдиреИрдк рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред
in рдШрдЯрдХрдбрд╛рдЗрдорд╛рдЙрдВрдЯ:
рдкреНрд░рдпрддреНрди {
const result = рдкреНрд░рддреАрдХреНрд╖рд╛ RNIap.initConnection ();
} рдкрдХрдбрд╝ (рдЧрд▓рддреА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдЗрд░реЗрдЯ);
}
рдШрдЯрдХ рдореЗрдВ:
RNIap.endConnection ();

ЁЯРЫ bug ЁЯдЦ android

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

@hyochan рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЗрд╕реЗ рдХрд▓ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ

@ Ilario17 рдпрд╣ рд╢рд╛рдпрдж рдЭрдВрдбрд╛ рд╣реИ рдХрд┐ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдПрдХ рддрд░реНрдХ рддреНрд░реБрдЯрд┐ рд╣реИ, рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХрдИ рдмрд╛рд░ рдирд╣реАрдВ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЖрд╣, рд╕рдорд╕реНрдпрд╛ рддрдм рдЖрддреА рд╣реИ рдЬрдм onBillingSetupFinished рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред ensureConnection рд╣рдореЗрдВ рд╢реНрд░реЛрддрд╛ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рд╣рдо рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛рдиреА рдЬрдм рд╣рдо callback.run() рдпрд╛ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ)ред рдЕрдЧрд░ рдХреЛрдИ рдХрд┐рд╕реА рдореБрдХреНрдд рдХрд░реНрдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рддреЛ рдПрдХ рдЖрд╕рд╛рди рдкреАрдЖрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП! рдЕрдиреНрдпрдерд╛ рдореИрдВ рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛

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

рдХреНрдпрд╛ рдЖрдк рд╣рдорд╛рд░реЗ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 2.3.19 рдФрд░ рд╡рд╛рдкрд╕реА рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд╕реНрдерд┐рддрд┐ рдереАред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ iap рдкреИрдХреЗрдЬ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рдЕрдм + 3k рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рдХреЛрдИ рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рд╢реБрдХреНрд░рд┐рдпрд╛ред рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЕрдЧрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдЬрдорд╛рдКрдВрдЧрд╛ред

рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдореИрдВ 2.3.21 рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

java.lang.RuntimeException:
com.facebook.react.bridge.CallbackImpl.invoke (CallbackImpl.java:28) рдкрд░
com.facebook.react.bridge.romiseImpl.resolve (PromiseImpl.java:30)
com.dooboolab.RNIap.RNIapModule $ 4.run (RNIapModule.java:155) рдкрд░
com.dooboolab.RNIap.RNIapModule рдкрд░ $ 3.onBillingSetupFinished (RNIapModule.java:124)
com.android.billingclient.api.BillingClientImpl рдкрд░ $ BillingServiceConnection.onServiceConnected (BillingClientImpl.java:903)
android.app.LoadedApk рдкрд░ $ ServiceDispatcher.doConnected (LoadedApk.java:1658)
android.app.LoadedApk $ ServiceDispatcher $ RunConnection.run (LoadedApk.java:1687) рдкрд░
android.os.Handler.handleCallback (рд╣реИрдВрдбрд▓рд░.рдЬрд╛рд╡рд╛: 789) рдкрд░
android.os.Handler.dispatchMessage (рд╣реИрдВрдбрд▓рд░.рдЬрд╡рд╛:98) рдкрд░
android.os.Looper.loop (Looper.java:164) рдкрд░
android.app.ActivityThread.main рдкрд░ (ActivThread.java:6938)
java.lang.reflect.Method.invoke (рдореВрд▓ рд╡рд┐рдзрд┐) рдкрд░
com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:327) рдкрд░
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374) рдкрд░

рдпрд╣ рдореЗрд░рд╛ рдХрдВрдкреЛрдиреЗрдВрдЯрдбрд┐рдорд╛рдЙрдВрдЯ рд╣реИ

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

        try {
            const message = await RNIap.initConnection();
            //console.log(`message = ${message}`);
            const items = await RNIap.getProducts(itemSKus);
            //console.log(`items = ${items.length}`);
            //console.log(items);
            this.props.storeInAppPurchaseList(items);
        } catch (errorCode) {
            console.log(`error rniap = ${errorCode}`);
        }

@LinusU рдХреНрдпрд╛ рдЖрдк рд╣рдорд╛рд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рд░рд┐рд▓реАрдЬ рдореЗрдВ callback.run() рдХреНрд░реИрд╢ рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛? рдХреНрдпрд╛ рд╣рдореЗрдВ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ callback ensureConnection рдореЗрдВ рд╢реВрдиреНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВ? рд╣рдореНрдоред рдпрд╣ рдПрдХ runtime exception ред

рд╣рдореНрдо, рдХреНрдпрд╛ RuntimeException рдпрд╣рд╛рдБ рдорддрд▓рдм рд╣реИ, рд╡рд╣рд╛рдБ рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ? @hyochan рдЖрдкрдХреЛ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ callback null ? ЁЯдФ

@LinusU рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдлрд┐рд▓рд╣рд╛рд▓ рдХреЛрдИ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдЕрднреА рдиреАрдЪреЗ рдореБрджреНрджрд╛ рд▓рд╛рдЗрди рджреЗрдЦреА рд╣реИред
image

RNIapModule.java рд▓рд╛рдЗрди рдореЗрдВ 124,

callback.run();

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдФрд░ рд╡рд┐рдЪрд╛рд░ рд╣реИ?

@LinusU рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рдХрд╣рд╛рдВ рдереЗред

рдареАрдХ рд╣реИ, рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рд╣реИ:

https://github.com/facebook/react-native/blob/370bcffba748e895ad8afa825bfef40bff859c95/ReactAndroid/src/main/java/com/facebook/react/bridge/CallbackImpl.java#L276276

рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╣рдо рдХреЙрд▓рдмреИрдХ рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХреЙрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!

@LinusU рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХ рдЯреНрд░реИрдХ рдореЗрдВ рд╣реИрдВ! рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП PR рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?

рдЙрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ RuntimeException рдХреНрдпреЛрдВ рд╣реИ?

if (!mInvoked) {
   mJSInstance.invokeCallback(mCallbackId, Arguments.fromJavaArgs(args));
   mInvoked = true;
}

рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ?

@hyochan рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЗрд╕реЗ рдХрд▓ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ

@ Ilario17 рдпрд╣ рд╢рд╛рдпрдж рдЭрдВрдбрд╛ рд╣реИ рдХрд┐ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдПрдХ рддрд░реНрдХ рддреНрд░реБрдЯрд┐ рд╣реИ, рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХрдИ рдмрд╛рд░ рдирд╣реАрдВ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЖрд╣, рд╕рдорд╕реНрдпрд╛ рддрдм рдЖрддреА рд╣реИ рдЬрдм onBillingSetupFinished рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред ensureConnection рд╣рдореЗрдВ рд╢реНрд░реЛрддрд╛ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рд╣рдо рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛рдиреА рдЬрдм рд╣рдо callback.run() рдпрд╛ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ)ред рдЕрдЧрд░ рдХреЛрдИ рдХрд┐рд╕реА рдореБрдХреНрдд рдХрд░реНрдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рддреЛ рдПрдХ рдЖрд╕рд╛рди рдкреАрдЖрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП! рдЕрдиреНрдпрдерд╛ рдореИрдВ рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛

@LinusU рддреЛ рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм onBillingSetupFinished , рд╣рдореЗрдВ billingClientStateListener рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдХреЛрдИ рд╣рдорд╛рд░реЗ рдмреАрдЪ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛?

рдпрджрд┐ рдЖрдк рдПрдХ рддреНрд╡рд░рд┐рдд рдФрд░ рдЧрдВрджрд╛ рд╕рдорд╛рдзрд╛рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдЬреЛрдбрд╝реВрдВрдЧрд╛, didCallCallback = false ред рдлрд┐рд░ callback.run() рдкреАрдЫреЗ if (didCallCallback) { didCallCallback = true; callback.run() } рдХреЙрд▓ рдХреА рд░рдХреНрд╖рд╛ рдХрд░реЗрдВред

рдПрдХ рдХреНрд▓реАрдирд░ рд╕рдорд╛рдзрд╛рди рдмрд╕ рдкрд╣рд▓реЗ рдХреЙрд▓ рдХреЗ рдмрд╛рдж рд╢реНрд░реЛрддрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд░ рджреЗрдЧрд╛ ...

Log.d(TAG, "billing client ready");
callback.run();
//deregister the listener here?

рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдлрд╝рд┐рдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА 2.4.0-beta2 рд░рд┐рд▓реАрдЬрд╝ рдХрд┐рдП рд╣реИрдВред рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

@hyochan рдореИрдВ рдЗрд╕ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛

рдХреГрдкрдпрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдХрд┐ 2.4.0-рдмреАрдЯрд╛ 3 рдХреЗ рдмрд╛рдж рд╕реЗ рдмреАрдЯрд╛ 2 рдореЗрдВ рдкреНрд░рддрд┐рдЧрдорди рдореБрджреНрджрд╛ рдерд╛ред

@hyochan рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж рднреА рддреНрд░реБрдЯрд┐ рдмрдиреА рд╣реБрдИ рд╣реИ :(

@ Ilario17 2.4.0-beta5 рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЪреВрдВрдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкрдХреНрд╖ рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ :(

@hyochan рдиреЗ рд╕рд┐рд░реНрдл рд╢реНрд░реЛрддрд╛ рдХреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛, рдЬреИрд╕рд╛ @LinusU рдиреЗ рдХрд╣рд╛?

@ Ilario17 рдореИрдВ рдЙрддреНрд╕реБрдХ рдерд╛ рдЕрдЧрд░ рдпрд╣ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ onBillingServiceDisconnected рдХреЛ рдЕрдзрд┐рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкрдХреНрд╖ рдореЗрдВ рдкрд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ 2.4.0-рдмреАрдЯрд╛ 5 рдореЗрдВ рдЗрд╕ рджреБрд░реНрдШрдЯрдирд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдкреНрд░рдЬрдирди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ:
рдореИрдВ рдЙрд╕ рдШрдЯрдХ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ IAP рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ, рдмреВрдо рдХреНрд░реИрд╢ред
EDIT: рдореИрдВрдиреЗ рдЗрд╕ рдХрдорд┐рдЯ рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рдпрд╣ https://github.com/dooboolab/react-native-iap/commit/2db337ac770a93508507ec046f310bddbb346fb рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛

Attempt to invoke virtual method 'void com.android.billingclient.api.BillingClient.querySkuDetailsAsync(com.android.billingclient.api.SkuDetailsParams, com.android.billingclient.api.SkuDetailsResponseListener)' on a null object reference
run
    RNIapModule.java:223
ensureConnection
    RNIapModule.java:113
getItemsByType
    RNIapModule.java:218
invoke
    Method.java
invoke
    JavaMethodWrapper.java:372
invoke
    JavaModuleWrapper.java:160
run
    NativeRunnable.java
handleCallback
    Handler.java:789
dispatchMessage
    Handler.java:98
dispatchMessage
    MessageQueueThreadHandler.java:29
loop
    Looper.java:164
run
    MessageQueueThreadImpl.java:192
run
    Thread.java:764

рдпрд╣ рдХреЛрдб 2 рдорд╛рдЙрдВрдЯ (2.4.0-beta5) рдкрд░ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ:

componentDidMount() {
    this.loadIAPProducts()
}

componentWillUnmount() {
    RNIap.endConnection();
}

loadIAPProducts = async () => {
    const itemSkus = ['XXXX_id']

    const result = await RNIap.initConnection();
    if(result) {
      try {
        const products = await RNIap.getProducts(itemSkus);
        if (products) {
          this.setState({ iapProducts: products })
        }
      } catch (err) {
        //console.log(err); // standardized err.code and err.message available
      }

      this.restoreIAPPurchases()
    }
  }

  restoreIAPPurchases = async () => {
    try {
      const purchases = await RNIap.getAvailablePurchases()
      if(purchases) {
        purchases.forEach(purchase => {
          if (purchase.productId === 'XXXX_id') {
            try {
              RNIap.consumePurchase(purchase.purchaseToken);
            } catch(err) {

            }
          }
        })
      }
    } catch (err) {
      //console.log(err)
    }
  }

@ rom1k рдЦреИрд░ рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдХреГрдкрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдг рдореЗрдВ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

@hyochan рдореИрдВ рдзреНрдпрд╛рди

рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ 2.4.0-рдмреАрдЯрд╛ 3 рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ "рдЦрд░реАрдж рдХреЛрдб рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реБрдИ: 0 (рдареАрдХ рд╣реИ)" рдХреЗрд╡рд▓ рдХреЙрд▓рд┐рдВрдЧ рдЧреЗрдЯрдкреНрд░реЛрдбрдХреНрдЯреНрд╕ рд╕реЗред рдмреАрдЯрд╛ 4 рдФрд░ 5 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВред рдореИрдВ 2.3.5 рдкрд░ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ 2.4.0-рдмреАрдЯрд╛ рдореЗрдВ рдЖрдИрдУрдПрд╕ рд╢реНрд░реЛрддрд╛ рдмрдЧ рдлрд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

`` `
рдШрдЯрдХрдбрд┐рдорд╛рдЙрдВрдЯ () {
this.getProductDetails ();
}

getProductDetails = async () => {
    try {
        await RNIap.initConnection();
        const details = await RNIap.getProducts(products);
        this.setState({
            title: details[0].title,
            description: details[0].description,
            price: details[0].localizedPrice,
            loading: false
        });
    } catch (err) {
        console.log(err.message)
    }
};

рдХреНрдпрд╛ рдЖрдк рдмреАрдЯрд╛ 5 рдФрд░ рд╡рд╛рдкрд╕реА рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЧрд▓рддреА рдереА рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЬрд▓реНрджреА рд╕реЗ рддрдп рдХрд┐рдпрд╛

@hyochan @LinusU рд╕рдВрд╕реНрдХрд░рдг 2.4.0-beta5 рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдЕрднреА рднреА рд╣реИред

рдореБрдЭреЗ рдЗрд╕ рдЪрд░реНрдЪрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред

2.4.0-рдмреАрдЯрд╛ 5 рдкрд░, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ

Attempt to invoke virtual method void com.android.billingclient.api.BillingClient.querySkuDetailsAsync(...) on a null object reference

RNIapModule.java рд▓рд╛рдЗрди 223 рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ mBillingClient рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ null рд╣реИред

рдкреБрди : RNIap.getProducts() componentDidMount рдФрд░ RNIap.endConnection() componentWillUnmount рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдШрдЯрдХ рдХреЛ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВред рдЙрдкрд░реЛрдХреНрдд рддреНрд░реБрдЯрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЪрд░ рдХреНрд▓рд╛рдЗрдВрдЯ clientReady рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓рд┐рдВрдЧ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗрдЯрдЕрдк рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕реЗ false onBillingServiceDisconnected() рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдХреЗред рд▓реЗрдХрд┐рди mBillingClient рдЦреБрдж рдХреЛ рддреБрд░рдВрдд рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм endConnection() рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдмреЗрдореЗрд▓ рд╣реИред clientReady рд▓рд┐рдП true рд╕реЗрдЯ рд░рд╣рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рднрд▓реЗ рд╣реА mBillingClient рд╢реВрдиреНрдп рд╣реЛред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдореЗрд░реА рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдПред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ onBillingServiceDisconnected() рдХреЛ рд░реЛрдХрдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдЙрдореНтАНрдореАрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓реЙрдЧрдЖрдЙрдЯ рдореЗрдВ "billing client disconnected" рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП onBillingServiceDisconnected() рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рд╕рдВрднрд╛рд╡рд┐рдд рдлрд┐рдХреНрд╕ : clientReady = false endConnection() рд╡рд┐рдзрд┐ (рдЬреИрд╕реЗ рд▓рд╛рдЗрди 179 рдХреЗ рдмрд╛рдж) рдХреЗ рднреАрддрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред рдЗрди-рдРрдк рдЦрд░реАрджрд╛рд░реА рдШрдЯрдХ рдХреЛ рдХрдИ рдмрд╛рд░ рд░реА-рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдпрд╛ рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ mBillingClient рдХреЛ рд╢реВрдиреНрдп рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреЛрдИ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рднреА рдЗрд╕ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдмрд┐рд▓рд┐рдВрдЧ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧрд┐рддреБрдм рдкрд░ рдХреЛрдИ рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред

@ mitchellmcm27 рдЖрдкрдХреЗ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдмрд╣реБрдд рд╣реА рдЖрд╢рд╛рдЬрдирдХ рд╣реИ рдФрд░ рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдмрд┐рдирд╛ рдХрд┐рд╕реА рдиреНрдпреВрдирддрдо рдкреНрд░рдЬрдирди рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрдард┐рди рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдХреЛрдИ PR рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рд╕рд╛рджрд░ред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдРрдк рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ 2.4.0-beta6 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдм рддрдХ рдХреБрдЫ рд╣рдЬрд╝рд╛рд░ рдЕрдкрдЧреНрд░реЗрдб рд╣реИрдВред рдХреЛрдИ рдХреНрд░реИрд╢ рдирд╣реАрдВ ЁЯСН

рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рддрдм рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ред

рдореЗрд░рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд╕реА рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдХреБрдЫ рджреБрд░реНрдШрдЯрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╣реИред


java.lang.RuntimeException: 
  at com.facebook.react.bridge.CallbackImpl.invoke (CallbackImpl.java:28)
  at com.facebook.react.bridge.PromiseImpl.resolve (PromiseImpl.java:30)
  at com.dooboolab.RNIap.RNIapModule$4.run (RNIapModule.java:155)
  at com.dooboolab.RNIap.RNIapModule$3.onBillingSetupFinished (RNIapModule.java:124)
  at com.android.billingclient.api.BillingClientImpl$BillingServiceConnection.onServiceConnected (BillingClientImpl.java:903)
  at android.app.LoadedApk$ServiceDispatcher.doConnected (LoadedApk.java:1658)
  at android.app.LoadedApk$ServiceDispatcher$RunConnection.run (LoadedApk.java:1687)
  at android.os.Handler.handleCallback (Handler.java:789)
  at android.os.Handler.dispatchMessage (Handler.java:98)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:6944)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ 2.4.0-beta6 рдкрд░ рдЕрднреА рднреА рд╡рд╣реА рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдмрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

schermata 2019-01-11 alle 10 51 20

24 рдШрдВрдЯреЗ рд╕реЗ рдХрдо рд╕рдордп рдореЗрдВ 120 рджреБрд░реНрдШрдЯрдирд╛ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рд╛рд▓ рдХреЗ рдмрджрд▓рд╛рд╡реЛрдВ рд╕реЗ рдЙрдирдХреА рдЦреБрдж рдХреА рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рдирд╣реАрдВ рд╣реБрдИрдВ, рдЬреИрд╕реЗ рдЕрдЧрд░ mBillingClient рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рддрдХ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ, рддреЛ ensureConnection рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ mBillingClient рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджреЗрдЧрд╛

рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧреА, рддрд╛рдХрд┐ рдореИрдВ рдПрдХ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рд╕рдХреВрдВред

рдореБрдЭреЗ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореВрд▓ рдореБрджреНрджреЗ рдХреЛ рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдерд╛, рдФрд░ рдЙрд╕ рдХреЗ рд▓рд┐рдП рдлрд┐рдХреНрд╕ "рд╢реВрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн" рддреНрд░реБрдЯрд┐ рд╕рд╛рдордиреЗ рдЖрдИред рдпрджреНрдпрдкрд┐ рдмрд╛рдж рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛрдЧрд╛ (рдореИрдВ @LinusU рд╕реЗ рд╕рд╣рдордд

рдореИрдВрдиреЗ рдмреАрдЯрд╛ 6 рдореЗрдВ рдХреЙрд▓рдмреИрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХреА рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рджрд┐рдпрд╛ рд╣реИред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕рдХреЗ рд▓рд┐рдП PR рджреЗ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрдм рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛? рдореБрдЭреЗ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдореИрдВ рдмреАрдЯрд╛ 6 рдкрд░ рдореМрдЬреВрдж рдХреНрд░реИрд╢ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рд╕рд╛рде рд╣реА рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ 2.3.23ред рдЗрд╕ [1] рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЕрдм рдЬрдм рдореИрдВ рдШрд░ рдкрд░ рд╣реВрдВ, рддреЛ рдореИрдВ рдмреАрдЯрд╛ 6 рдХреЗ рд▓рд┐рдП Android рдореВрд▓ рдХреЛрдб рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрджрд┐ рдпрд╣ рдорджрджрдЧрд╛рд░ рд╣реИ, рддреЛ рдпрд╣ рд╣реЛ рд░рд╣рд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рдРрдк рдореЗрдВ, getAvailablePurchases рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛):

  1. "рдЕрдиреБрдкрдпреБрдХреНрдд" рдХреЗ рд▓рд┐рдП getAvailableItemsByType рдЕрднреА рддрдХ mBillingClient рд╕реЗрдЯрдЕрдк рдХреЗ рдмрд┐рдирд╛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рдмрд┐рд▓рд┐рдВрдЧ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗрдЯрдЕрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╢реНрд░реЛрддрд╛ рдореЗрдВ onBillingSetupFinished рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЙрд▓рдмреИрдХ (рд╡рд╛рджрд╛) рдЦрдкрдд (рд╣рд▓) рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╢реНрд░реЛрддрд╛ рдЖрдЬ рднреА рдореМрдЬреВрдж рд╣реИрдВред
  3. "рдЙрдк" рдХреЗ рд▓рд┐рдП getAvailableItemsByType mBillingClient рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирдпрд╛ рдХреЙрд▓рдмреИрдХ (рд╡рд╛рджрд╛) рдЦрдкрдд (рд╣рд▓) рд╣реИред
  4. Play Store рд╕реЗрд╡рд╛ рдХреЛ рдорд╛рд░реЗрдВ - BillingClientImpl рдореЗрдВ onServiceDisconnected рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд╛рдЧ рд╕реЗ рд╢реНрд░реЛрддрд╛ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рдПрдХ рдирдИ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдФрд░ рднрд╛рдЧ 1 рд╕реЗ рд╢реНрд░реЛрддрд╛ onBillingSetupFinished рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдФрд░ рдЪрд░рдг рдПрдХ рд╕реЗ рдХреЙрд▓рдмреИрдХ (рд╡рд╛рджрд╛) рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рд╢реНрд░реЛрддрд╛ рдХреЛ рдорд╛рд░рдиреЗ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реВрдБрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

[рез]
https://github.com/googlesamples/android-play-billing/issues/45#issuecomment -345466519

рдореИрдВрдиреЗ # 379 рдорд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ beta8 рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд┐рдпрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдирд╡реАрдирддрдо рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?

@hyochan рдпрд╣ рдореБрджреНрджрд╛ рдЕрднреА рднреА 3.0.0-rc-2 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ?

java.lang.RuntimeException
com.dooboolab.RNIap.RNIapModule$3.onBillingSetupFinished

java.lang.RuntimeException: 
  at com.facebook.react.bridge.CallbackImpl.invoke (CallbackImpl.java:28)
  at com.facebook.react.bridge.PromiseImpl.resolve (PromiseImpl.java:30)
  at com.dooboolab.RNIap.RNIapModule$3.onBillingSetupFinished (RNIapModule.java:129)
  at com.android.billingclient.api.BillingClientImpl$BillingServiceConnection$1.run (BillingClientImpl.java:1518)
  at android.os.Handler.handleCallback (Handler.java:739)
  at android.os.Handler.dispatchMessage (Handler.java:95)
  at android.os.Looper.loop (Looper.java:148)
  at android.app.ActivityThread.main (ActivityThread.java:7325)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1230)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120)

@fokoz рдЖрдк 3.0.0-rc-4 рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ (рдЙрдореНрдореАрдж) рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

@hyochan рдЕрдЧрд░ рдореИрдВ try catch рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ rc-4 рдХреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдзрдиреНрдпрд╡рд╛рдж !

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

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

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

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

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

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

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