您应该在 `onBillingServiceDisconnected()` 中输入什么?
What should you put in `onBillingServiceDisconnected()`?
这是我得到的方法:
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
}
});
}
Google 说我应该“实现重试逻辑”但没有说明如何实现。我想也许只是在 onBillingServiceDisconnected()
中调用 setupBillingClient()
但有些人说这会导致崩溃。另外我觉得如果真的那么简单,那么 google 会告诉我们写那个而不是模糊的指令来实现重试逻辑。
我也 运行 关注这个问题。 Google 关于这个的文档简直是一团糟,(好吧,就像 API 本身)。
所以,here Google 说
To implement retry logic, override the onBillingServiceDisconnected()
callback method, and make sure that the BillingClient calls the
startConnection() method to reconnect to Google Play before making
further requests.
这意味着断开连接后我们必须手动调用startConnection
。
但是hereGoogle说
Called to notify that the connection to the billing service was lost.
Note: This does not remove the billing service connection itself -
this binding to the service will remain active, and you will receive a
call to onBillingSetupFinished(BillingResult) when the billing service
is next running and setup is complete.
在我看来,这与之前的说法完全矛盾。
根据我使用计费库的经验,我相信最后一个说法更有可能是正确的。不过我不是 100% 确定。
但我可以确认我在 logcat 中看到一条断开连接消息,随后是另一条消息,表明计费客户端已准备就绪。不过我没有做任何重启操作。此外,如果我尝试 startConnection
在断开回调中,然后我开始在 logcat 中收到两条消息 connection/disconnection.
基于此,我可以这样说:
- 您可以转到 here 并单击页面底部的“无帮助”。或者在 Twitter 上标记他们,或者在他们的跟踪器上创建问题。
- 我们正在讨论的重试逻辑与连接重试无关。即将重试我们尝试使用计费客户端执行的操作,但它没有成功,因为它已断开连接。
这是我得到的方法:
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
}
});
}
Google 说我应该“实现重试逻辑”但没有说明如何实现。我想也许只是在 onBillingServiceDisconnected()
中调用 setupBillingClient()
但有些人说这会导致崩溃。另外我觉得如果真的那么简单,那么 google 会告诉我们写那个而不是模糊的指令来实现重试逻辑。
我也 运行 关注这个问题。 Google 关于这个的文档简直是一团糟,(好吧,就像 API 本身)。
所以,here Google 说
To implement retry logic, override the onBillingServiceDisconnected() callback method, and make sure that the BillingClient calls the startConnection() method to reconnect to Google Play before making further requests.
这意味着断开连接后我们必须手动调用startConnection
。
但是hereGoogle说
Called to notify that the connection to the billing service was lost.
Note: This does not remove the billing service connection itself - this binding to the service will remain active, and you will receive a call to onBillingSetupFinished(BillingResult) when the billing service is next running and setup is complete.
在我看来,这与之前的说法完全矛盾。
根据我使用计费库的经验,我相信最后一个说法更有可能是正确的。不过我不是 100% 确定。
但我可以确认我在 logcat 中看到一条断开连接消息,随后是另一条消息,表明计费客户端已准备就绪。不过我没有做任何重启操作。此外,如果我尝试 startConnection
在断开回调中,然后我开始在 logcat 中收到两条消息 connection/disconnection.
基于此,我可以这样说:
- 您可以转到 here 并单击页面底部的“无帮助”。或者在 Twitter 上标记他们,或者在他们的跟踪器上创建问题。
- 我们正在讨论的重试逻辑与连接重试无关。即将重试我们尝试使用计费客户端执行的操作,但它没有成功,因为它已断开连接。