【问题标题】:How to properly update Android BillingFlowParams sku() to setSkuDetails()如何将 Android BillingFlowParams sku() 正确更新为 setSkuDetails()
【发布时间】:2022-04-02 17:30:29
【问题描述】:

这是代码,任何人都可以告诉我如何 setSkuDetails() 因为我现在使用的是视觉一,所以我将它更新为 4 但是,在 BillingFlowParams.Builder 类中似乎不推荐使用 setSku 和 setType。相反,我们应该使用 setSkuDetails(SkuDetails)。

    private void BillingFunction() {
        mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        // Establish connection to billing client
        mBillingClient = BillingClient.newBuilder(MainActivity.this).setListener(MainActivity.this).build();
        mBillingClient.startConnection(new BillingClientStateListener() {
            @Override
            public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
                if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                    // The billing client is ready. You can query purchases here.
                    getPricesMonthlyTime();
                    getPricesYearlyTime();
                    getPricesONeTime();
                }
            }

            @Override
            public void onBillingServiceDisconnected() {
                //TODO implement your own retry policy
                Toast.makeText(MainActivity.this, getResources().getString(R.string.billing_connection_failure), Toast.LENGTH_SHORT);
                // Try to restart the connection on the next request to
                // Google Play by calling the startConnection() method.
            }
        });


        continue_button.setOnClickListener(view -> {
            if (select_radio_one.getVisibility() == View.VISIBLE) {
                BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                        .setSkuDetails()
                        .build();

                BillingResult responseCode = mBillingClient.launchBillingFlow(MainActivity.this, flowParams);
                brandDialogInAppPurchase.dismiss();
            } else if (select_radio_two.getVisibility() == View.VISIBLE) {
                BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                        .setSkuDetails()
                        .build();

                BillingResult responseCode = mBillingClient.launchBillingFlow(MainActivity.this, flowParams);

                brandDialogInAppPurchase.dismiss();
            } else if (select_radio_three.getVisibility() == View.VISIBLE) {
                BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                        .setSkuDetails()
                        .build();

                BillingResult responseCode = mBillingClient.launchBillingFlow(MainActivity.this, flowParams);
                brandDialogInAppPurchase.dismiss();
            } else {
                Toast.makeText(MainActivity.this, "Nothing selected", Toast.LENGTH_SHORT).show();
            }

        });

//          queryPrefPurchases();
        queryPurchases();

    }

【问题讨论】:

    标签: in-app-purchase in-app-subscription play-billing-library google-play-billing


    【解决方案1】:

    您应该发送对象 skuDetail。 为此,您需要通过调用 querySkuDetailsAsync() 来检索它。

    fun querySkuDetails() {
        val skuList = ArrayList<String>()
        skuList.add("premium_upgrade")
        skuList.add("gas")
        val params = SkuDetailsParams.newBuilder()
        params.setSkusList(skuList).setType(SkuType.INAPP)
    
        // leverage querySkuDetails Kotlin extension function
        val skuDetailsResult = withContext(Dispatchers.IO) {
            billingClient.querySkuDetails(params.build())
        }
    
        // Process the result.
    }
    

    【讨论】:

      猜你喜欢
      • 2019-07-12
      • 2018-11-10
      • 2020-03-31
      • 1970-01-01
      • 2013-02-07
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多