如何在App Starts - Play Billing 1.0中查询用户购买

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在App Starts - Play Billing 1.0中查询用户购买相关的知识,希望对你有一定的参考价值。

这是我的账单管理员

public class BillingManager implements PurchasesUpdatedListener {
    private BillingClient mBillingClient;
    private Activity mActivity;

    public BillingManager(Activity activity) {
        mActivity = activity;
        mBillingClient = BillingClient.newBuilder(mActivity).setListener(this).build();
        startServiceConnectionIfNeeded(null);
    }

    private void startServiceConnectionIfNeeded(final Runnable executeOnSuccess) {
        if (mBillingClient.isReady()) {
            if (executeOnSuccess != null) {
                executeOnSuccess.run();
            }
        } else {
            mBillingClient.startConnection(new BillingClientStateListener() {
                @Override
                public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponse) {
                    if (billingResponse == BillingClient.BillingResponse.OK) {
                        Log.i(TAG, "onBillingSetupFinished() response: " + billingResponse);
                        if (executeOnSuccess != null) {
                            executeOnSuccess.run();
                        }
                    } else {
                        Log.w(TAG, "onBillingSetupFinished() error code: " + billingResponse);
                    }
                }

                @Override
                public void onBillingServiceDisconnected() {
                    Log.w(TAG, "onBillingServiceDisconnected()");
                }
            });
        }
    }

以下监听器仅在完成Google Play库时执行

@Override
    public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
        Log.d(TAG, "onPurchasesUpdated: ResponseCode = "+ responseCode);
        Log.d(TAG, "onPurchasesUpdated: Purchase = "+purchases);
        if (responseCode == BillingClient.BillingResponse.OK && purchases != null) {
                //if user purchased something
        } else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {
            // Handle an error caused by a user cancelling the purchase flow.
        } else {
            // Handle any other error codes.
        }
    }
答案

除了成功的onBillingSetupFinished回调之外,在你的活动的onCreate内部甚至更好的onResume(这将防止在应用之间切换时丢失购买的潜在问题)。

对于所有类似的问题,请查看最新的TrivialDrive_v2

例如。 queryPurchase在那里被触发herehere

以上是关于如何在App Starts - Play Billing 1.0中查询用户购买的主要内容,如果未能解决你的问题,请参考以下文章

如何在新的 Google Play Console 中管理 Instant App?

APP如何发布到Google play 商店

如何发布自己的APP到Google Play上

如何使用 in_app_update 强制用户从 Flutter 中的 Play 商店更新应用

如何在 google play 上制作没有“立即尝试”按钮的 Android Instant App?

(React Native) 如何将 App Signing Key 上传到 Google Play Console?