Skip to content

Commit 94a57fe

Browse files
committed
register listener on main thread for appstore sdk v3.x
register listener on main thread for appstore sdk v3.x * Amazon IAP SDK v2.x is deprecated and developers are encouraged to use AppStore SDK v3.x. Users were getting a crash on initialization. * To support the AppStore SDK, `PurchasingService.registerListener()` must run on the main thread. * Note: We do still support the existing implementation for IAP SDK v2.x, and we won't register on the main thread.
1 parent 6f27669 commit 94a57fe

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

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)