Я делаю приложение для Android с биллинговыми услугами. Я уже добавил метод "магазин", чтобы пользователь мог подписать. Мое приложение имеет только одну подписку на продажу. Проблема в том, что когда пользователь открывает приложение, я не могу получить, если у него есть индекс или нет. До сих пор я пришел к этому коду, даже когда пользователь подстрочный purchasesResult.getPurchasesList()
возвращает null
:
premium = false
try{
Purchase.PurchasesResult purchasesResult = billingClient.queryPurchases(BillingClient.SkuType.SUBS);
for (Purchase purchase : purchasesResult.getPurchasesList()) {
acknowledgePurchaseParams =
AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();
acknowledgePurchaseResponseListener = new AcknowledgePurchaseResponseListener() {
@Override
public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
premium = true;
}
};
handlePurchase(purchase);
}}
catch (Exception e){
e.printStackTrace();
}
метод handlePurchase:
void handlePurchase(Purchase purchase) {
if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
if (!purchase.isAcknowledged()) {
AcknowledgePurchaseParams acknowledgePurchaseParams =
AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();
billingClient.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);
}
else SplashScreenActivity.premium = true;
}
}
Я ищувперед, чтобы проверить, если пользователь подписан так, я могу установить premium = true
. До сих пор я использую некрасивое решение, которое снова покупает продукт и проверяет, возвращает ли он ITEM_ALREADY_OWNED. Все еще ищу лучшее решение.
ПРИМЕЧАНИЕ : я получаю этот результат при альфа-тестировании.
NOTE 2 : Thisссылка может помочь.
ПРИМЕЧАНИЕ 3 : Эта ссылка показывает другим пользователям ту же проблему.