diff --git a/OneSignalSDK/onesignal/build.gradle b/OneSignalSDK/onesignal/build.gradle index b702ec71c3..f1c53b9bb6 100644 --- a/OneSignalSDK/onesignal/build.gradle +++ b/OneSignalSDK/onesignal/build.gradle @@ -42,6 +42,7 @@ android { // patch version is ok, since this allows getting bug fix versions. dependencies { compileOnly fileTree(dir: 'libs', include: ['*.jar']) + compileOnly('com.amazon.device:amazon-appstore-sdk:[3.0.1, 3.0.99]') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" diff --git a/OneSignalSDK/onesignal/libs/in-app-purchasing-2.0.1.jar b/OneSignalSDK/onesignal/libs/in-app-purchasing-2.0.1.jar deleted file mode 100644 index e558cdbb66..0000000000 Binary files a/OneSignalSDK/onesignal/libs/in-app-purchasing-2.0.1.jar and /dev/null differ diff --git a/OneSignalSDK/onesignal/src/main/java/com/onesignal/TrackAmazonPurchase.java b/OneSignalSDK/onesignal/src/main/java/com/onesignal/TrackAmazonPurchase.java index 9ecb95de98..63f6b212e5 100644 --- a/OneSignalSDK/onesignal/src/main/java/com/onesignal/TrackAmazonPurchase.java +++ b/OneSignalSDK/onesignal/src/main/java/com/onesignal/TrackAmazonPurchase.java @@ -55,7 +55,10 @@ class TrackAmazonPurchase { private boolean canTrack = false; private OSPurchasingListener osPurchasingListener; - + + // appstore v3.x requires PurchasingService.registerListener() to run on main UI thread + private boolean registerListenerOnMainThread = false; + private Object listenerHandlerObject; private Field listenerHandlerField; @@ -72,6 +75,7 @@ class TrackAmazonPurchase { } catch(NullPointerException e) { //appstore v3.x listenerHandlerObject = listenerHandlerClass.getMethod("e").invoke(null); + registerListenerOnMainThread = true; } listenerHandlerField = listenerHandlerClass.getDeclaredField("f"); @@ -104,7 +108,16 @@ private static void logAmazonIAPListenerError(Exception e) { } private void setListener() { - PurchasingService.registerListener(context, osPurchasingListener); + if (registerListenerOnMainThread) { + OSUtils.runOnMainUIThread(new Runnable() { + @Override + public void run() { + PurchasingService.registerListener(context, osPurchasingListener); + } + }); + } else { + PurchasingService.registerListener(context, osPurchasingListener); + } } void checkListener() {