【发布时间】:2022-08-04 13:36:06
【问题描述】:
我正在尝试使用 Amazon SDK (3.0.3) 在 Android 上实现订阅 IAP。我按照亚马逊相应文档及其示例应用程序中的描述制作了所有东西,并正确配置了亚马逊应用程序测试器。但是没有运气,我没有收到 PurchasingListener 的回复。
ResponseReceiver 在 Manifest 中具有以下结构:
<receiver android:name = \"com.amazon.device.iap.ResponseReceiver\"
android:permission = \"com.amazon.inapp.purchasing.Permission.NOTIFY\"
android:exported=\"true\">
<intent-filter>
<action android:name = \"com.amazon.inapp.purchasing.NOTIFY\" />
</intent-filter>
</receiver>
我在 onCreate() 中注册 PurchaseListener:
PurchasingService.registerListener(this.getApplicationContext(), purchasingListener);
然后在 onStart() 中进行此调用
final Set<String> productSkus = new HashSet<String>();
for (final MySku mySku : MySku.values()) {
productSkus.add(mySku.getSku());
Log.d(TAG, \"onStart: call getProductData for skus: \" + mySku.getSku());
}
PurchasingService.getProductData(productSkus);
最后在 onResume() 中:
PurchasingService.getUserData();
PurchasingService.getPurchaseUpdates(false);
这些电话没有任何回应。侦听器本身已注册,正如我在日志中看到的那样:
2022-07-27 18:50:14.791 11790-11790/......amazon D/d: Appstore SDK - Sandbox Mode: PurchasingListener registered: ......amazon.iap.SamplePurchasingListener@b3c6192
重要的是,如果我在 Manifest 中使用旧式接收器结构(在 <receiver 标签下没有 \"android:permission = \"com.amazon.inapp.purchasing.Permission.NOTIFY\"),如下所示:
<receiver android:name = \"com.amazon.device.iap.ResponseReceiver\"
android:exported=\"true\">
<intent-filter>
<action android:name = \"com.amazon.inapp.purchasing.NOTIFY\"
android:permission = \"com.amazon.inapp.purchasing.Permission.NOTIFY\"/>
</intent-filter>
</receiver>
,我收到了一些回复,但非常令人沮丧,因为这不是预期的,并且此权限以 err 突出显示:
Protecting an unsupported element with a permission is a no-op and potentially dangerous
这种情况下的日志显示:
2022-07-27 19:07:11.673 12723-12723/.....amazon D/e: Appstore SDK - Sandbox Mode: sendGetUserDataRequest
2022-07-27 19:07:11.684 12723-12723/.....amazon D/e: Appstore SDK - Sandbox Mode: sendPurchaseUpdatesRequest/sendGetUserData first:e0656912-440d-4c7d-a864-0548028a803d
2022-07-27 19:07:11.743 12723-12723/.....amazon D/e: Appstore SDK - Sandbox Mode: handleResponse
2022-07-27 19:07:11.895 12723-12723/......amazon D/IAPListener: onProductDataResponse: RequestStatus (SUCCESSFUL)
2022-07-27 19:07:11.897 12723-12723/.....amazon D/IAPListener: onProductDataResponse: successful. The item data map in this response includes the valid SKUs
2022-07-27 19:07:11.897 12723-12723/...amazon D/IAPListener: onProductDataResponse: 0 unavailable skus
...而且没有其他东西在那里。购买按钮已死,没有其他反应!
我不使用 Proguard 缩小代码。
测试设备 Amazon Fire 7 平板电脑。
目标 SDK - 32。
我在这里呆了很长时间,如果有人能帮助我解决这个问题,我将不胜感激!
先感谢您...
=========== 更新1:
在不同的测试设备上,结果是不同的。在 Amazon Fire 7 平板电脑上,一切都死了。但在小米红米 S2 PurchasingListener 上,PurchasingListener 仍然存在,但产品数据为空。这是日志:
... D/IAPListener: onUserDataResponse: get user id (l3HL7XppEMhrOGDnur9-ulvqomrSg6qyODKmah76lJU=, marketplace (US)
... D/IAPListener: onProductDataResponse: RequestStatus (SUCCESSFUL)
.... D/IAPListener: onProductDataResponse: successful. The item data map in this response includes the valid SKUs
.... D/IAPListener: onProductDataResponse: response.getProductData(): {}
.... D/IAPListener: onProductDataResponse: 0 unavailable skus
.... D/IAPListener: onPurchaseUpdatesResponse: requestId (a5db322e-d894-4ebf-896a-9007140c91d2) purchaseUpdatesResponseStatus (SUCCESSFUL) userId ()
三星 Galaxy Tab A 也是如此
-
您能否确认您是否能够让
SampleIAPSubscriptionsApp在您的设备上运行?这应该有助于排除 Amazon App Tester 是否存在配置问题。 -
不,订阅的示例应用程序也不起作用。我在亚马逊市场上也有一款应用实施了 IAP。我在使用 Amazon App Tester 成功发布之前对其进行了测试。现在它也不起作用了。
-
听起来 Amazon App Tester 未能找到 IAP 数据。您能否确认 IAP json 数据是否在正确的位置?您是否授予 Amazon App Tester 访问外部存储的权限?我没有现代设备来验证,只是抛出一些想法。
-
感谢你的付出!当然,它测试了很多次,json 文件在正确的位置,App Tester 识别它。我在 App Tester 界面的适当部分看到它。如果不是,我会看到对话框“没有数据”或类似的东西。可以截图:)如果你有时间,你能自己测试一下App Tester吗?甚至他们的示例应用程序也不起作用。如果你能让它工作,我们可以确认它至少对你有用,我可以检查这个代码并与我的比较,尽管我相信应该没有任何区别。
-
我认为 App Tester 本身有问题。它很旧,似乎没有被亚马逊更新。今天直接写出来。
标签: android sdk in-app-purchase amazon