在(最终)发布Google Play应用内结算的v2实施后,我在启动后只有它的问题。丢失的交易,崩溃,无法恢复,疯狂的错误,如“无法下载,你已经拥有这个项目”,以及各种其他荒谬的事情。老实说,我现在已经在iOS,Amazon App Store,Samsung Apps和Blackberry 10上集成了IAB,Google Play代码比其他所有代码都花费了更多时间。十次。这太糟糕了。
无论如何,我决定尝试将v3应用到我的应用中。整合过程非常简单,因此谷歌对此赞不绝口。此外,恢复以前的交易现在按预期工作,这很好。但是,我有几个停止显示的问题:
非常感谢(提前)为您提供帮助。如果您认为有必要,我很乐意分享代码,尽管我的问题似乎更多地是关于功能设计而不是其他任何东西。我希望我在这里做错了,因为我觉得像谷歌这样有能力的公司会重新编写这个整个系统并且在整个地方仍然有如此巨大的漏洞......: - /
再次感谢,
本
答案 0 :(得分:4)
答案 1 :(得分:2)
我有同样的错误,我购买后不小心忘了消耗该物品。但是,当我试图购买另一个相同的项目App崩溃。
我深入研究了Google IabHelper类,发现此语句未正确处理。我做了一些小改动,现在它有效。而不是使用侦听器重新发送错误消息。
以下是代码的修改部分。它在launchPurchaseFlow()
方法中。我不确定我是否通过更改看起来需要的代码做了一些好事。希望它有所帮助。
try {
logDebug("Constructing buy intent for " + sku);
Bundle buyIntentBundle = mService.getBuyIntent(3, mContext.getPackageName(), sku, ITEM_TYPE_INAPP, extraData);
int response = getResponseCodeFromBundle(buyIntentBundle);
if (response != BILLING_RESPONSE_RESULT_OK) {
logError("Unable to buy item, Error response: " + getResponseDesc(response));
result = new IabResult(response, "Unable to buy item");
if (listener != null) listener.onIabPurchaseFinished(result, null);
/* Finish Current Async Task*/
flagEndAsync();
} else {
PendingIntent pendingIntent = buyIntentBundle.getParcelable(RESPONSE_BUY_INTENT);
logDebug("Launching buy intent for " + sku + ". Request code: " + requestCode);
mRequestCode = requestCode;
mPurchaseListener = listener;
act.startIntentSenderForResult(pendingIntent.getIntentSender(),
requestCode, new Intent(),
Integer.valueOf(0), Integer.valueOf(0),
Integer.valueOf(0));
}