Use*_*163 7 java android in-app-billing
这是我的方法:
public void setupBillingClient() { //connect to google play
billingClient = BillingClient.newBuilder(context)
.enablePendingPurchases()
.setListener(this)
.build();
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
//The BillingClient is setup successfully
loadAllSkus();
}
}
@Override
public void onBillingServiceDisconnected() {
//TODO: implement retry logic to handle lost connections to Google Play by calling startConnection() again
}
});
}
Run Code Online (Sandbox Code Playgroud)
谷歌说我应该“实现重试逻辑”,但没有说明如何实现。我想也许只是打电话setupBillingClient()进去onBillingServiceDisconnected(),但有些人说这会导致崩溃。另外,我觉得如果有那么简单,那么谷歌就会告诉我们这样写,而不是模糊的指令来实现重试逻辑。
我也遇到了这个问题。关于此的 Google 文档简直是一团糟(好吧,就像 API 本身一样)。
所以,谷歌在这里说
要实现重试逻辑,请重写 onBillingServiceDisconnected() 回调方法,并确保 BillingClient在发出进一步请求之前调用 startConnection() 方法重新连接到 Google Play。
这意味着断开连接后我们必须startConnection手动调用。
但谷歌在这里说
打电话通知与计费服务的连接已丢失。
注意:这不会删除计费服务连接本身 - 与服务的绑定将保持活动状态,并且当计费服务下次运行且设置完成时,您将收到对 onBillingSetupFinished(BillingResult) 的调用。
在我看来,这与之前的说法完全矛盾。
根据我使用计费库的经验,我相信最后的说法更有可能是正确的。但我不是 100% 确定。
但我可以确认我在 logcat 中看到了一条断开连接消息,然后是另一条表明计费客户端已准备就绪的消息。但我没有执行任何重启操作。另外,如果我尝试startConnection在断开连接回调中,那么我开始在每次连接/断开连接时在 logcat 中收到两条消息。
基于此,我可以说:
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |