Как заменить BillingClient.queryPurchases() на BillingClient.queryPurchasesAsync()
Здравствуйте , пытаюсь заменить BillingClient.queryPurchases() на BillingClient.queryPurchasesAsync() (нужно для перехода с версии 3 на 4 Google Play Billing Library)
Просит 2 аргумента какие я не пойму не особо шарю в программировании .
//
Нужна помощь.
Весь код прилагаю ниже
public class MainActivity extends AppCompatActivity implements PurchasesUpdatedListener {
public static final String PRODUCT_ID1 = "purchase";
private BillingClient billingClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBillingClient(null);
}
public void mBillingClient (View view){
// Устанавливаем соединение с клиентом биллинга
// проверяем статус покупки из кеша Google Play Store
// чтобы проверить, был ли товар уже приобретен ранее или возвращен
billingClient = BillingClient.newBuilder(this)
.enablePendingPurchases().setListener(this).build();
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
Purchase.PurchasesResult queryPurchase = billingClient.queryPurchases(INAPP);
Purchase.PurchasesResult queryPurchase = billingClient.queryPurchasesAsync();
List<Purchase> queryPurchases = queryPurchase.getPurchasesList();
if (queryPurchases != null && queryPurchases.size() > 0) {
initiatePurchase();
for (int i = 0; i < queryPurchases.size(); i++) {
ArrayList<String> purchaseId = queryPurchases.get(i).getSkus();
if (TextUtils.equals(PRODUCT_ID1, (CharSequence) purchaseId)) {
payComplete1(null);
}
}
}
billingClient.endConnection();
}
}
@Override
public void onBillingServiceDisconnected() {
}
});
}
private void initiatePurchase() {
List<String> skuList = new ArrayList<>();
skuList.add(PRODUCT_ID1);
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(INAPP);
}
@Override
public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> purchases) { }
public void payComplete1(View view)
{ Toast.makeText(getApplicationContext(), "\n" + " payComplete1 - Товар куплен 1", Toast.LENGTH_SHORT).show();};
}
Ответы (1 шт):
Автор решения: kitfist0
→ Ссылка
Это можно посмотреть в документации. Первым параметром должна быть строка, которая определяет тип запрашиваемых покупок (подписка или in-app). Вторым параметром является листенер (в нем вы можете обрабатывать результат вашего запроса)
billingClient.queryPurchasesAsync(
BillingClient.SkuType.INAPP,
(billingResult, list) -> {
// ...
}
);
