Amazon IAP - 未调用PurchaseObserver回调(onSdkAvailable除外)

时间:2013-03-21 09:27:04

标签: android amazon billing in-app-purchase

我使用ButtonClicker示例作为基础框架将我们的游戏连接到亚马逊商店。我正在尝试实现店面,因此在onItemDataResponse回调中构建可购买项目目录。但这与onGetUserIdResponse一起永远不会被调用。但是sdk测试人员正在记录成功的项目数据响应BroadCasts和UserID响应BroadCasts并记录amazon.sdktester.json的内容。请注意onSdkAvailable正在被调用....还有其他人经历过这个吗?如果是这样,你是如何解决它的?任何帮助或建议都会很棒。 谢谢克里斯

2 个答案:

答案 0 :(得分:2)

我刚才遇到了你描述的同样的问题。 (我从采购经理那里得不到回调)

在我的清单中我有:

 <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”属性,因为它删除了警告“导出的接收者不需要许可”

现在我的清单看起来像这样,在应用程序购买中可以使用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>

答案 1 :(得分:0)

首先,如果您正在测试,请确保已安装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>

(侧面注意,android:permission标记上的<action>属性没有执行任何操作。但是,如果将其移动到它所属的<receiver>标记,则再次不会收到广播 - 至少来自SDK Tester应用程序,也可能来自IAP客户端。您可以将其保留为文档建议或只删除android:permission属性;请参阅this thread。)