我在Android InApp计费v3上面临一个问题。我在playstore中创建了一个托管的inapp产品,我需要从多个设备上多次购买。为此,我正在两个不同的设备上测试应用程序。我没有在本地服务器上保留任何购买数据。因此,每当我需要再次购买该项目时,我将查询该项目以获得购买状态,并且如果该项目被购买,我将使用该项目并将再次调用购买功能。我正在详细说明我的错误情况
inventory.hasPurchase(sku)
设为 false ,将inventory.getPurchase(sku)
设为 null 。谷歌搜索时,我发现这与Google Playstore缓存有关。执行此操作后,手动缓存清除,我按预期获得结果。任何人都可以指导我上述问题。
IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
if (result.isFailure()) {
invokePurchaseError(ResponseCode.FAILED_TO_QUERY_INVENTORY, result.toString());
}
else{
if(mActionCode == RC_REQUEST_FOR_QUERYING){
boolean mIsPurchased = false;
Log.e("hasPurchase", inventory.hasPurchase(mSku)+"");
Log.e("getPurchase", inventory.getPurchase(mSku)+"");
if( inventory.hasPurchase(mSku)){
mPurchaseStatus = inventory.getPurchase(mSku);
mIsPurchased = (mPurchaseStatus != null && verifyDeveloperPayload(mPurchaseStatus));
if(mPurchaseStatus!=null){
mPurchaseStatus.getOriginalJson());
}
else{
//Not purchased
}
}
}
}
};
答案 0 :(得分:0)
我遇到了同样的问题:在第一台设备上购买了托管项目,但第二台和第三台设备上的托管项目似乎没有#34;知道"关于它。对我来说,解决方案很简单,但:
作为第一步,我清除了所有相关设备上的PlayStore缓存(虽然不确定它是否必要)
其次,我在第一台设备上再次购买了这个项目,但是其他设备似乎都无法获取信息。我给了整个"系统"一段时间(大约10-15分钟)并对设备2和3进行了重新检查。而且 - 太奇怪了! - 他们终于得到了正确的hasPurchase = true
信息。