如何在具有多个帐户的设备上处理应用内计费



我在处理具有多个帐户的设备上的应用内计费清单时遇到问题。

设备1:

  • 设备上只有一个帐户(用户=X(
  • 在google play上使用帐户X登录
  • 使用帐户X登录google play游戏
  • 购买完成(sku=remove_ds(

设备2:

  • 设备上的三个帐户(用户=X、Y、Z(
  • 在google play上使用帐户X登录
  • 使用帐户X登录google play游戏
  • 查询库存

处理查询库存响应的代码如下:

@Override
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
    if (result.isFailure()) {
        Log.d("billing", "inventory: failed (" + result.mMessage + ")");
        return;
    }
    Log.d("billing", "inventory: remove_ads purchased=" + inventory.hasPurchase("remove_ads");
}

DEVICE 1上的logcat输出为:

inventory: remove_ads purchased=true

设备2上的logcat输出为:

inventory: remove_ads purchased=false

我错过了什么?谢谢

这是我的错误,这就是发生的事情:

  1. 在发布的版本上使用DEVICE 1测试购买(发布签名(,购买成功
  2. 我开始使用DEVICE 1开发下一个版本(调试签名(,但由于购买是在这个设备上完成的,谷歌播放计费缓存了响应,当我查询库存时,它返回true
  3. 过了一段时间,我开始使用DEVICE 2,然后当我查询库存时,谷歌播放账单没有返回任何内容,因为购买没有缓存,APK签名也不匹配

当我用发布签名签署APK并在DEVICE 2上测试时,一切都开始工作了。

结论:要更加注意签名并注意缓存的响应

相关内容

  • 没有找到相关文章

最新更新