Android google play billing 4“接收者太多,总共1000个,注册pid:31647,callerPackage:...”

Pey*_*man 5 android google-play google-play-services play-billing-library google-play-billing

我仅在某些设备上遇到此崩溃。当我尝试构建一个新的BillingClient.

我无法正确调试这个问题,因为它不会发生在我的任何设备上。再次强调,这种情况并不是在所有设备上都会发生,只会在安装了我的应用程序的 10% 的设备上发生。

以下是我启动计费的方式:

class BillingManager(
    private val context: Context,
    private val firebase: FirebaseManager,
    private val storage: SharedPreferenceStorage
) {

    private var billingClient: BillingClient? = null
    val initBillingResponse = MutableLiveData<Boolean?>()

    private val startConnectionListener = object : BillingClientStateListener {
        override fun onBillingSetupFinished(result: BillingResult) {
            if (result.isResponseOk()) {
                getSKUs()
                checkSubscription()
                initBillingResponse.postValue(true)
            } else {
                initBillingResponse.postValue(false)
            }
        }

        override fun onBillingServiceDisconnected() {
            initBillingResponse.postValue(false)
        }
    }
  
    init {
        initBilling()
    }

    private fun initBilling() {
        initBillingResponse.postValue(null)

        try {
            billingClient = BillingClient.newBuilder(context)
                .enablePendingPurchases()
                .setListener { billingResult, purchases ->
                    if (billingResult.isResponseOk()) {
                        acknowledgePurchases(purchases)
                        checkSubscription()
                    } else {
                        billingResult.responseCode
                    }
                }
                .build()

            billingClient?.startConnection(startConnectionListener)
        } catch (e: Throwable) {
            e.printStackTrace()
            FirebaseCrashlytics.getInstance().recordException(e)
            initBillingResponse.postValue(false)
        }
    }

    // Other functions
}
Run Code Online (Sandbox Code Playgroud)