Skip to content

Commit 1ebb912

Browse files
authored
Merge pull request #1621 from OneSignal/fix/amazon_iap_crash
Fix crash related to Amazon AppStore SDK
2 parents 6f27669 + 590331b commit 1ebb912

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

OneSignalSDK/onesignal/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ android {
4242
// patch version is ok, since this allows getting bug fix versions.
4343
dependencies {
4444
compileOnly fileTree(dir: 'libs', include: ['*.jar'])
45+
compileOnly('com.amazon.device:amazon-appstore-sdk:[3.0.1, 3.0.99]')
4546

4647
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"
4748

Binary file not shown.

OneSignalSDK/onesignal/src/main/java/com/onesignal/TrackAmazonPurchase.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@ class TrackAmazonPurchase {
5555
private boolean canTrack = false;
5656

5757
private OSPurchasingListener osPurchasingListener;
58-
58+
59+
// appstore v3.x requires PurchasingService.registerListener() to run on main UI thread
60+
private boolean registerListenerOnMainThread = false;
61+
5962
private Object listenerHandlerObject;
6063
private Field listenerHandlerField;
6164

@@ -72,6 +75,7 @@ class TrackAmazonPurchase {
7275
} catch(NullPointerException e) {
7376
//appstore v3.x
7477
listenerHandlerObject = listenerHandlerClass.getMethod("e").invoke(null);
78+
registerListenerOnMainThread = true;
7579
}
7680

7781
listenerHandlerField = listenerHandlerClass.getDeclaredField("f");
@@ -104,7 +108,16 @@ private static void logAmazonIAPListenerError(Exception e) {
104108
}
105109

106110
private void setListener() {
107-
PurchasingService.registerListener(context, osPurchasingListener);
111+
if (registerListenerOnMainThread) {
112+
OSUtils.runOnMainUIThread(new Runnable() {
113+
@Override
114+
public void run() {
115+
PurchasingService.registerListener(context, osPurchasingListener);
116+
}
117+
});
118+
} else {
119+
PurchasingService.registerListener(context, osPurchasingListener);
120+
}
108121
}
109122

110123
void checkListener() {

0 commit comments

Comments
 (0)