Использование RESTORE_TRANSACTION
является единственным способом, если использовать управляемые покупки. Если вы используете неуправляемые покупки, вы можете сохранить состояние покупки на своем собственном сервере, но это вряд ли проще.
О RESTORE_TRANSACTIONS
ничего не происходит: вы просто запускаете команду, и вы получаете уведомление с информацией о транзакции, которая находится в том же формате, что и вы, когда вы впервые покупаете товар. Вы должны обрабатывать его точно так же, и, скорее всего, у вас уже есть код для вашего приложения. Тестирование это несколько сложнее, потому что оно не работает с тестовыми учетными записями, и вам нужно жить.
Перейдите к документации official, чтобы понять, как она работает.
Три способа управления данными вашего приложения.
1) SharedPrefrence: вы можете использовать значение prefrence акций и проверить, является ли он куплен или нет. если в случае, если пользователь удалил приложение, а затем снова установил приложение, вы можете проверить, был ли пользователь приобретен или нет, при этом вы приобретаете товар уже купленный. И вам нужно управлять пользователем для доступа к вашим данным приложения.
2) локальная база данных: вы также можете использовать локальную базу данных sqlite для хранения деталей покупки и статуса покупки. и то же самое, что и выше, если пользователь очистит данные или удалит приложение, затем снова запросите элемент покупки и проверьте, был ли пользователь приобретенным или нет.
или
2) базы данных сервера: Это лучший способ сравнить выше, если вы используете веб-сервер для хранения пользовательских данных. В этом типе вам даже не нужно управлять во второй раз для случая, если пользователь удалит приложение или очистит данные приложения.
3) запутывания: (Самый эффективный способ по сравнению с общим prefrence)
Для получения более подробной информации о проверке реализации HERE
Вот фрагмент того, как операции восстанавливаются:
private void restoreTransactions() {
if (!mBillingObserver.isTransactionsRestored()) {
BillingController.restoreTransactions(this);
Toast.makeText(this, R.string.restoring_transactions, Toast.LENGTH_LONG).show();
}
}
EDITED:
V3 api больше не требует восстановления покупок. Может напрямую запрашивать купленные предметы.
Пожалуйста, прочтите раздел запрашивая для купленного товара из: http://developer.android.com/google/play/billing/billing_integrate.html
и getPurchases() method description.
Чтобы уже приобрел элементы детали опробовать, как показано ниже:
IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result,
Inventory inventory) {
if (result.isFailure()) {
complain("Failed to query inventory: " + result);
return;
}
mIsPremium = inventory.hasPurchase(SKU_PREMIUM); ------> By here you can get information
}
};
Спасибо за ваш ответ. Не могли бы вы рассказать мне более подробно о том, как использовать RESTORE_TRANSACTIONS. Я использую версию V3 – Sushil
Ознакомьтесь с моим обновленным ответом. – GrIsHu
На моем месте я использую «IabHelper» для покупки товара. Будет ли у меня возможность называть getPurchases()? или sud я делаю mService общедоступным, а затем использую его? Существует ли стандартный способ использования «IabHelper»? Спасибо за Ваш ответ. – Sushil