Как правильно обновить методы Android BillingFlowParams устарела - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть

BillingFlowParams purchaseParams = BillingFlowParams.newBuilder().setSku(skuId).setType(billingType).setOldSkus(oldSkus).build();

, но теперь

setSku

setType

setOldSkus

устарели.

Я хочу обновить старый код без выпуска обновления, связанного сактивные и будущие подписки.Как правильно обновить вышеуказанный код?

В настоящее время я использую String myProduct="my_newsweek_1"; для идентификации покупки и BillingClient.SkuType.SUBS для определения типа, и я просто передаю null на setOldSkus

Документация сообщает, что

setSku (String sku) и setType (String type) были заменены на setSkuDetails(SkuDetails) (этот SkuDetails объект получает только String в качестве параметра в конструкторе и выбрасывает JSONException, как кажетсяне работает со старыми String константами)

и

setOldSkus(ArrayList<String> oldSkus) заменены на setOldSku(String)

1 Ответ

0 голосов
/ 18 февраля 2019

Вам нужно BillingFlowParams для launchBillingFlow().Вы можете создавать свои SkuDetails со своей собственной строкой json, но это не тот путь, который намечен.Сначала вы должны вызвать querySkuDetailsAsync() и получить необходимый skuDetailsList, а затем использовать их для launchBillingFlow()


public void querySkuDetailsAsync(@SkuType final String itemType, final List<String> skuList, final SkuDetailsResponseListener listener) {
    Runnable queryRequest = new Runnable() {
        @Override
        public void run() {
            // Query the purchase async
            SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
            params.setSkusList(skuList).setType(itemType);
            mBillingClient.querySkuDetailsAsync(params.build(),
                    new SkuDetailsResponseListener() {
                        @Override
                        public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
                            //use skuDetails in skuDetailsList
                        }
                    });
            }
        };
    executeServiceRequest(queryRequest);
}

public void initiatePurchaseFlow(final SkuDetails skuDetails) {
   Runnable purchaseFlowRequest = new Runnable() {
      @Override
      public void run() {
      Log.d(TAG, "Launching in-app purchase flow.");
      BillingFlowParams purchaseParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build();
         mBillingClient.launchBillingFlow(mActivity, purchaseParams);
      }
   };
   executeServiceRequest(purchaseFlowRequest);
}
...