【问题标题】:Android - can't test subscriptions (only live mode enabled)Android - 无法测试订阅(仅启用实时模式)
【发布时间】:2021-06-04 18:19:51
【问题描述】:

我的 Fragment 中有一个简单的订阅按钮,我想测试订阅(我使用的是 anjlab/android-inapp-billing-v3)。我尝试在模拟器中进行测试,但没有任何反应,计费处理器甚至没有初始化。不会出现任何类型的消息。如果我尝试在我的设备上进行测试,则:

bp.getSubscriptionTransactionDetails("my_id");

返回 null,我收到一条消息“此版本未配置为计费”。

我阅读了有关此问题的信息,发现我必须上传 alpha 或 beta。

这是现有应用的新版本。旧版本没有订阅。我上传了一个用于 Alpha 测试的版本。它在清单中包含 BILLING 权限:

<uses-permission android:name="com.android.vending.BILLING" />

它目前出现在控制台的 Alpha 轨道中。

如果我从封闭测试下载应用到我的手机,订阅按钮会显示订阅表,但有实时选项(这意味着它告诉我将通过我的实际信用卡付费)。

我当前的项目和我上传的签名包中的版本名称和版本代码相同(上传到控制台后我没有触及这些数字,所以它们是相同的)。应用ID相同。

我不知道还能做什么。

如何使用测试卡在本地设备上测试订阅成功/失败?

这是我的示例屏幕上的代码 (SubscriptionFragment),它有一个按钮:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View v =  inflater.inflate(R.layout.fragment_subscription, container, false);

    subscribeBtn = v.findViewById(R.id.subscribeBtn);


    // Initialize
    bp = new BillingProcessor(getActivity(), getResources().getString(R.string.play_console_license), this);
    bp.initialize();

    return v;
}

@Override
public void onBillingInitialized() {
    Log.d(TAG, "onBillingInitialized: ");

    // Check if user is already subscribed
    subscriptionTransactionDetails = bp.getSubscriptionTransactionDetails("my_id");
    Log.d(TAG, "onBillingInitialized: " + subscriptionTransactionDetails);

    subscribeBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (bp.isSubscriptionUpdateSupported()) {
                bp.subscribe(getActivity(), "my_id");
            } else {
                Log.d(TAG, "onClick: Subscription update is not supported.");
            }
        }
    });

    if (hasSubscription()) {
        // update UI
    }
}

private boolean hasSubscription() {
    if (subscriptionTransactionDetails != null) {
        return subscriptionTransactionDetails.purchaseInfo != null;
    }
    return false;
}

@Override
public void onProductPurchased(String productId, TransactionDetails details) {
    Log.d(TAG, "onProductPurchased: ");
}

@Override
public void onPurchaseHistoryRestored() {
    Log.d(TAG, "onPurchaseHistoryRestored: ");
}

@Override
public void onBillingError(int errorCode, Throwable error) {
    Log.d(TAG, "onBillingError: ");
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (!bp.handleActivityResult(requestCode, resultCode, data)) {
        
    }
}

@Override
public void onDestroy() {
    if (bp != null) {
        bp.release();
    }
    super.onDestroy();
}

【问题讨论】:

    标签: android in-app-billing in-app-subscription


    【解决方案1】:

    我想通了。如果其他人为此苦苦挣扎,您不仅需要成为普通的应用程序测试人员,还需要转到设置 -> 许可证测试并在那里添加您的电子邮件。只有这样您才能在本地设备上进行测试。

    【讨论】:

      【解决方案2】:

      您使用的库已过时,尽管它宣传为“v3 库”,但实际上它是使用旧 AIDL 服务的“v2 库”,Google 将于 11 月停止使用该服务。

      【讨论】:

        猜你喜欢
        • 2015-12-21
        • 2016-03-17
        • 2014-02-15
        • 1970-01-01
        • 2021-09-22
        • 2018-09-05
        • 2013-07-04
        • 2017-10-03
        • 2018-01-10
        相关资源
        最近更新 更多