当前位置: 首页 > 知识库问答 >
问题:

onPurchases更新不需要等待购买成功

公瑞
2023-03-14

我已经更新了我的应用程序,使用v2.1.0(从早期的2.0.1版本)的android play计费库,我不再收到购买更新完成一个悬而未决的购买。

我构造了计费客户端,将侦听器设置为当前类,该类实现了PurchasesUpdatedListener

billingClient = BillingClient.newBuilder( getActivity() )
        .setListener( this )
        .enablePendingPurchases()
        .build();

然后我启动购买,并使用“几分钟后慢测试卡批准”

BillingFlowParams.Builder purchaseParamsBuilder = BillingFlowParams.newBuilder()
        .setSkuDetails( product );

billingClient.launchBillingFlow( getActivity(), purchaseParamsBuilder.build() );

我的监听器在这之后被调用,表明购买正在等待:

@Override
public void onPurchasesUpdated( BillingResult billingResult, List<Purchase> purchases )
{
    int responseCode = billingResult.getResponseCode();
    if (responseCode == BillingClient.BillingResponseCode.OK)
    {
        // I get to here with a Purchase.PurchaseState.PENDING 
    }
}

然而,当购买完成时,这个监听器不会被调用。我让应用程序打开,我在通知栏中看到播放商店的通知,说购买成功。

如果我在收到通知后手动查询购买情况,我可以获得更新的购买信息,但是这似乎不是处理购买的有效方法。

有人知道我做错了什么吗?或者这个过程改变了吗?

共有1个答案

周睿范
2023-03-14

这是Play Store应用程序(v17.9.17)中的一个问题。这里的代码是正确的,在使用上述播放计费库时没有错误,即当挂起的事务完成(成功或取消)时,应调用onPurchasesUpdated

谷歌已经隔离了这个问题,将在下一次更新中修复。

错误报告的参考可在以下位置找到:

https://issuetracker.google.com/issues/146480197

 类似资料:
  • 我正在开发一个应用内购买。我已将该应用程序放在 Play 商店进行封闭测试。在帐户设置中使用测试人员电子邮件和添加的测试人员电子邮件。我在 Play 商店中有 2 个托管产品。我在调试模式下测试了 android.test.purchased 并且工作正常。但是在我购买 SKU 时从 Play 商店安装的发布版本中,它成功完成了购买,但由于某种原因我收到了失败响应。我试图弄清楚这一点。此外,我在购

  • 我正在尝试将Android Market应用内购买整合到我的应用中,但不幸的是,每次我尝试购买真正的应用内产品时,都会遇到一个恼人的错误。 我已经采取了样例应用程序(地下城)并添加到我的应用程序。我已经更新了公钥并将产品列表更新到以下内容: 我还添加了我的GoogleEmail账户作为测试账户(也就是我在手机上登录的账户)。 当我在我的手机上运行这个应用程序时,我会收到一条你要求的商品不可用的an

  • 我有一组从基类继承的命令。基类有以下声明: 此异步方法缺少“await”运算符,将同步运行。考虑使用'await'运算符来等待非阻塞API调用,或者使用'await task.run(...)'在后台线程上执行CPU绑定的工作。 显式提供任务完成返回值是否正确?

  • 问题内容: 在Bash中,可以通过追加在后台执行命令。如何在Python中完成? 问题答案: 我用。我在模块级别创建一个单例线程池,然后用于启动任务。 该命令给了我一个未来,我可以将它无限期地与其他未来添加到列表中,直到我想收集全部或部分结果为止。 出于所有逻辑和理由,是一个THREAD池而不是一个进程池。 示例(只要安装了请求,就可以在Python 2和3中使用): 这些请求将同时执行,因此运行

  • 域名 服务器 注册域名 runkoa 购买阿里云 购买3毛4分一小时的阿里云,用来学习linux服务器部署 购买原则 如果是短时间学习按需合算,如果长时间是包月合算,另外如果有虚拟机用虚拟机 设置自动释放,不用的时候自动销毁,提前做好计划,我要玩啥,计划个时间,学不会就自动释放,强迫自己快速学习 如果是大规模测试,其实这种按需的还是有他的优势的,测试并发,高可用非常好的 注册阿里云账户并登陆 ht

  • 问题内容: 我会明白为什么 需要新的线程;它适用于: 为什么我不能使用同一线程?一世: 将光标设置为WAIT(进入GUI队列) 做我的长任务…(它进入GUI队列,但我希望光标更改,即在队列中,它在此之前执行) 将光标重置为默认值(任务完成后) 那么,我的长任务不会进入MAIN队列吗?因为,如果它进入主队列,我希望它在我的WAIT游标首先插入队列之后执行。为什么会这样呢? 问题答案: 没有线程,您的