While testing in-app-purchase using Amazon App Tester, the app crashed on this line
RequestOutput response = IAPService.Purchase(request);
I am following the code sample from here
In the Output window, the purchase seems to be called successfully.
06-06 19:42:56.238 D/Mono (24121): Searching for 'nativePurchaseJson'.
06-06 19:42:56.238 D/Mono (24121): Probing 'nativePurchaseJson'.
06-06 19:42:56.238 D/Mono (24121): Found as 'nativePurchaseJson'.
06-06 19:42:56.240 D/AmazonIapV2 Bridge(24121): Executing native Purchase
06-06 19:42:56.246 I/AmazonIapV2(24121): purchase called
06-06 19:42:56.247 I/AmazonIapV2(24121): purchase sku:carquiz.coinsforsale1
06-06 19:42:56.247 D/c (24121): In App Purchasing SDK - Sandbox Mode: sendPurchaseRequest
06-06 19:42:56.267 D/AmazonIapV2 Bridge(24121): java method called
06-06 19:42:56.268 D/AmazonIapV2Android(24121): Successfully called native code in 30 ms
I've also added the following permission in my AndroidManifest.xml file:
<receiver android:name="com.amazon.device.iap.ResponseReceiver">
<intent-filter>
<action
android:name="com.amazon.inapp.purchasing.NOTIFY"
android:permission="com.amazon.inapp.purchasing.Permission.NOTIFY" />
</intent-filter>
</receiver>
I've registered the PurchaseResponse
event but this never called because it crashed during purchasing.
iapService.AddPurchaseResponseListener(EventHandler);
What am I missing?
Update:
I noticed there's a notification in my phone Notification Bar from Amazon App Tester. It is only partially visible and cannot be expanded to reveal the full message. Clicking on it will bring me to Amazon App Tester. It says
Implementation Problem Detected
com.myapp.carquiz failed to call PurchasingS..
I presume it is PurchasingService
Update 2 My log cat
06-07 15:35:07.548 E/AndroidRuntime( 9699): FATAL EXCEPTION: main
06-07 15:35:07.548 E/AndroidRuntime( 9699): Process: com.amazon.sdktestclient, PID: 9699
06-07 15:35:07.548 E/AndroidRuntime( 9699): Theme: themes:{default=overlay:com.cyngn.themes.hexo, iconPack:com.cyngn.themes.hexo, fontPkg:com.cyngn.themes.hexo, com.android.systemui=overlay:com.cyngn.themes.hexo, com.android.systemui.navbar=overlay:com.cyngn.themes.hexo}
06-07 15:35:07.548 E/AndroidRuntime( 9699): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.amazon.sdktestclient/com.amazon.sdktestclient.iap.ui.PurchaseActivity}: java.lang.IllegalArgumentException: Path must not be empty.
06-07 15:35:07.548 E/AndroidRuntime( 9699): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at android.app.ActivityThread.-wrap11(ActivityThread.java)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at android.os.Handler.dispatchMessage(Handler.java:102)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at android.os.Looper.loop(Looper.java:148)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at android.app.ActivityThread.main(ActivityThread.java:5461)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at java.lang.reflect.Method.invoke(Native Method)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
06-07 15:35:07.548 E/AndroidRuntime( 9699): Caused by: java.lang.IllegalArgumentException: Path must not be empty.
06-07 15:35:07.548 E/AndroidRuntime( 9699): at com.squareup.picasso.Picasso.load(Picasso.java:297)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at com.amazon.sdktestclient.iap.ui.PurchaseActivity.updateProductDetails(PurchaseActivity.java:214)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at com.amazon.sdktestclient.iap.ui.PurchaseActivity.onCreatePurchaseActivity(PurchaseActivity.java:120)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at com.amazon.sdktestclient.iap.ui.PurchaseActivity.onCreate(PurchaseActivity.java)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at android.app.Activity.performCreate(Activity.java:6251)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
06-07 15:35:07.548 E/AndroidRuntime( 9699): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
06-07 15:35:07.548 E/AndroidRuntime( 9699): ... 9 more
06-07 15:35:07.552 W/JsonSuggestProvider( 4000): ext: null, mimeType: null, handles: false
06-07 15:35:07.552 D/ApplicationSuggestionService( 4000): handles? false
06-07 15:35:07.552 W/ActivityManager( 831): Force finishing activity com.amazon.sdktestclient/.iap.ui.PurchaseActivity
06-07 15:35:07.555 W/DropBoxManagerService( 831): Dropping: data_app_crash (1687 > 0 bytes)
06-07 15:35:07.556 W/ActivityManager( 831): Force finishing activity com.borneomobile.carquiz/md546d24a5175fed40732720790778ad3a9.GameView
I fixed this by submitting the in-app items via my Developer dashboard, Downloaded the JSON file just to make sure I am using the correct formatting and adb push it into my device.
When I ran the test again it works without error.