Summary
On Fire TV with Appstore SDK 3.x, PurchasingService.purchase(sku) never produces a purchase dialog and never delivers onPurchaseResponse(). The Appstore accepts the command, issues its product-metadata request, receives a response within one second, and then stops entirely — no billing type, no dialog, no callback, no error, no retry, and no further network activity or logging.
The identical purchase (same device, same account, same SKU, same LAT build, minutes apart) completes in 96 ms using the legacy in-app-purchasing 2.x SDK.
This looks related to this thread ( Bug: Different Amazon Purchase UI and Infinite Loading State When Retrying a Purchase ) but is not the same case: there, the first purchase works and only the retry-after-Back hangs, and clearing Appstore cache restores it. Here a clean first purchase hangs, and cache clear, data clear, reboot, Home-and-reopen and a brand-new Amazon account all make no difference.
Environment
- Fire TV Stick , Fire OS 7.7.1.5
- Appstore release-8.5104.5.v.x.246516.0_429364910
- Appstore SDK 3.0.9 (also reproduced on 3.0.7)
- SKU tvod_rental_movie_3_preprod (consumable)
- Client library: openiap / expo-iap (calls the single-arg PurchasingService.purchase(String) on the main thread)
Appstore event timeline
Failing — SDK 3.x. From your own IapAD3LoggingDelegate, single requestId:
IapPurchaseItemCommandInitiated
IapPurchaseItemCommandResetSyncingCheckpoints
IapPurchaseItemCommandSuccess
IapTimeFromStartToFinishPurchaseItemCommandCompleted
IapTimeFromPurchaseItemCommandToDetailDialogInitiated
IapPurchaseItemCommandCompleted
IapGetIAPProductDetailsByVendorSkuListInitiated
IapGetIAPProductDetailsByVendorSkuListCompleted
IapGetIAPProductDetailsByVendorSkuListCalledWithGapm ← last event, ever
Working — legacy IAP 2.x, same device/account/SKU, 20 minutes earlier:
IapGetIAPProductDetailsByVendorSkuListCalledWithGapm (11:05:40.366)
IapPurchaseItemCommandMissingBillingType (11:05:40.407)
IapInAppBillingTypeHandled (11:05:40.428)
IapTimeFromStartToFinishGetItemInfoInitiated
IapProductDetailsFetchedFromODS (11:05:40.462) ← 96 ms after GAPM
IapConsumableFtvPurchaseV2DialogRendered
IapPurchaseConsumableInitiated
Questions:
- What causes the purchase flow to terminate after IapGetIAPProductDetailsByVendorSkuListCalledWithGapm without emitting IapProductDetailsFetchedFromODS, an error, or any callback?
2.Why does 2.x reach IapPurchaseItemCommandMissingBillingType → IapInAppBillingTypeHandled while 3.x never emits MissingBillingType for the same SKU? Does the 3.x request require a billing type that this LAT item cannot supply, and is there no fallback for that case ?