【发布时间】:2012-08-01 22:13:17
【问题描述】:
我对 Android 在 RESTORE_TRANSACTIONS 方面的应用内计费感到非常困惑。
我有这个 sn-p 用于在我的应用程序中捐款:
BillingHelper.requestPurchase(mContext, "donation");
效果很好,没有问题。问题就在这里,购买完成后我设置了一个布尔值:
if (BillingHelper.latestPurchase.isPurchased()) {
DONATE_VERSION = true;
}
在此之后,应用程序将按预期运行,除非用户卸载该应用程序。我将 DONATE_VERSION 存储在共享首选项中。不能将购买信息存储在互联网上的个人数据库中。
当用户重新安装应用程序时,他们可以从捐赠中移除广告的唯一方法是再次捐赠!我不希望出现这种情况。我希望能够向 Google 查询已购买哪些物品(在本例中为“捐赠”物品)的结果。我在 onCreate() 中调用它:
BillingHelper.restoreTransactionInformation(BillingSecurity.generateNonce());
但是现在呢?如果用户之前购买了“捐赠”的托管应用内购买,我如何查询谷歌以从应用内结算中获取有关已购买哪些物品的信息,以便我可以再次设置我的布尔值?请尽可能清楚,因为我一直在搞砸这个,在 IRC 上聊天,并搜索 API 大约 6 个小时,但我无法弄清楚。
编辑:
我的 onReceive() 方法:
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i(TAG, "Received action: " + action);
if (ACTION_PURCHASE_STATE_CHANGED.equals(action)) {
String signedData = intent.getStringExtra(INAPP_SIGNED_DATA);
String signature = intent.getStringExtra(INAPP_SIGNATURE);
purchaseStateChanged(context, signedData, signature);
} else if (ACTION_NOTIFY.equals(action)) {
String notifyId = intent.getStringExtra(NOTIFICATION_ID);
notify(context, notifyId);
} else if (ACTION_RESPONSE_CODE.equals(action)) {
long requestId = intent.getLongExtra(INAPP_REQUEST_ID, -1);
int responseCodeIndex = intent.getIntExtra(INAPP_RESPONSE_CODE, C.ResponseCode.RESULT_ERROR.ordinal());
checkResponseCode(context, requestId, responseCodeIndex);
} else {
Log.e(TAG, "unexpected action: " + action);
}
【问题讨论】:
-
可以恢复用户购买信息吗??其实我也面临这个问题
标签: android in-app-purchase in-app-billing