Я пытаюсь создать систему восстановления покупки.Я хочу, чтобы пользователь мог получить доступ к купленным продуктам с любого устройства, на котором он / она вошла. Поэтому при запуске приложения я использую метод queryPurchaseHistoryAsync ().Моя проблема начинается здесь.
С новой реализацией Google, В отличие от документации, изменились параметры queryPurchaseHistoryAsync ().Теперь он принимает список объектов PurchaseHistoryRecord в качестве параметра вместо списка объектов Purchase.
Студия Android не может разрешить метод, указанный в документации.С новым queryPurchaseHistoryAsync () я не смог найти способ проверить состояние покупок (если оно было куплено, отменено или ожидает рассмотрения).Что я смог сделать с объектом «Покупка» с помощью метода «purchase.getPurchaseState ()».
Документирование queryPurchaseHistoryAsync ()
billingClient.queryPurchaseHistoryAsync(SkuType.INAPP,
new PurchaseHistoryResponseListener() {
@Override
public void onPurchaseHistoryResponse(BillingResult billingResult,
List<Purchase> purchasesList) {
if (billingResult.getResponseCode() == BillingResponse.OK
&& purchasesList != null) {
for (Purchase purchase : purchasesList) {
// Process the result.
}
}
}
});
Моя реализация
implementation 'com.android.billingclient:billing:2.0.3'
Метод queryPurchaseHistoryAsync () в моем приложении
billingClient.queryPurchaseHistoryAsync(BillingClient.SkuType.INAPP,
new PurchaseHistoryResponseListener() {
@Override
public void onPurchaseHistoryResponse(BillingResult billingResult, List<PurchaseHistoryRecord> purchaseHistoryRecordList) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK
&& purchaseHistoryRecordList != null) {
for (PurchaseHistoryRecord purchaseHistoryRecord : purchaseHistoryRecordList) {
HandleOldGetting(purchaseHistoryRecord.getSku());
}
}
}
Информация о выпуске Google (05-2019):
"Чтобы свести к минимуму путаницу, функция queryPurchaseHistoryAsync () теперь возвращает объект PurchaseHistoryRecord вместо объекта PurchaseОбъект PurchaseHistoryRecord аналогичен объекту Purchase, за исключением того, что он отражает только значения, возвращаемые queryPurchaseHistoryAsync (), и не содержит полей autoRenewing, orderId и packageName. Обратите внимание, что с возвращенными данными ничего не изменилось - queryPurchaseHistoryAsync ()возвращает те же данные, что и раньше. "
Но ни в примечании к выпуску, ни в документации не указано, как проверить состояние покупки с помощью PurchaseHistoryRecord.
Спасибо, что прочитали это, любая помощь приветствуется.