【问题标题】:Amazon IAP - PurchaseObserver callbacks not called (except onSdkAvailable)Amazon IAP - 未调用 PurchaseObserver 回调(onSdkAvailable 除外)
【发布时间】:2013-03-10 17:35:21
【问题描述】:
我使用 ButtonClicker 示例作为基本框架将我们的游戏连接到亚马逊商店。我正在尝试实现店面,因此在onItemDataResponse 回调中构建可购买商品的目录。但是这和onGetUserIdResponse 永远不会被调用。但是 sdk 测试器正在记录成功的项目数据响应广播和用户 ID 响应广播并记录 amazon.sdktester.json 的内容。请注意 onSdkAvailable 正在被调用....有其他人经历过吗?如果是这样,你是如何绕过它的?任何帮助或建议都会很棒。
谢谢克里斯
【问题讨论】:
标签:
android
amazon
billing
in-app-purchase
【解决方案1】:
我刚刚遇到了你描述的同样的问题。 (我没有收到采购经理的回电)
在我的清单中,我有:
<receiver android:name = "com.amazon.inapp.purchasing.ResponseReceiver"
android:exported="false" >
<intent-filter>
<action android:name = "com.amazon.inapp.purchasing.NOTIFY" android:permission = "com.amazon.inapp.purchasing.Permission.NOTIFY" />
</intent-filter>
</receiver>
删除 android:exported="false" 属性为我解决了这个问题。最初我添加了 android:exported="false" 属性,因为它删除了警告“exported receiver requires no permission”
现在我的清单看起来像这样,并且可以使用 sdk 测试器正确测试应用内购买:
<receiver android:name = "com.amazon.inapp.purchasing.ResponseReceiver" >
<intent-filter>
<action android:name = "com.amazon.inapp.purchasing.NOTIFY" android:permission = "com.amazon.inapp.purchasing.Permission.NOTIFY" />
</intent-filter>
</receiver>
【解决方案2】:
首先,如果您正在测试,请确保已安装 SDK Tester 应用,并且您已将amazon.sdktester.json 文件上传到您的设备或模拟器上的/mnt/sdcard/(如here 所述)。
调用onSdkAvailable 回调不需要任何 IPC,因此它并不表示您正在与客户端或测试应用程序进行通信。
另外,请确保您已在清单中声明了接收方。来自the Amazon docs:
<receiver android:name="com.amazon.inapp.purchasing.ResponseReceiver" >
<intent-filter>
<action android:name="com.amazon.inapp.purchasing.NOTIFY"
android:permission="com.amazon.inapp.purchasing.Permission.NOTIFY" />
</intent-filter>
</receiver>
(顺便说一句,<action> 标记上的android:permission 属性没有任何作用。但是,如果将其移至它所属的<receiver> 标记,您将再次接收不到广播-至少来自 SDK Tester 应用程序,也可能来自 IAP 客户端。您可以按照文档的建议保留它,或者直接删除android:permission 属性;请参阅this thread。)