xamarinxamarin.androidamazon-appstoreamazon-in-app-purchase

Amazon App Tester crash (Xamarin) during purchase test


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

Solution

  • 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.