- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要一些关于如何建立连接和查询 sku 详细信息的信息。我正在编写教程并将应用内计费逻辑复制到我的应用中。
https://codelabs.developers.google.com/codelabs/play-billing-codelab
我按照教程没有任何问题。问题在于如何建立连接,然后查询 sku 详细信息。
当我创建 BillingManager 类的实例时,它将尝试建立连接 -
public BillingManager(Activity activity) {
mActivity = activity;
mBillingClient = BillingClient.newBuilder(mActivity).setListener(this).build();
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponse) {
if (billingResponse == BillingClient.BillingResponse.OK) {
Log.i(TAG, "onBillingSetupFinished() response: " + billingResponse);
} else {
Log.w(TAG, "onBillingSetupFinished() error code: " + billingResponse);
}
}
@Override
public void onBillingServiceDisconnected() {
Log.w(TAG, "onBillingServiceDisconnected()");
}
});
}
然后,我将进行异步查询以获取 sku 详细信息 -
private void handleManagerAndUiReady() {
// Start querying for SKUs
List<String> inAppSkus = mBillingProvider.getBillingManager()
.getSkus(SkuType.INAPP);
mBillingProvider.getBillingManager().querySkuDetailsAsync(SkuType.INAPP,
inAppSkus,
new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(int responseCode,
List<SkuDetails> skuDetailsList) {
if (responseCode == BillingResponse.OK
&& skuDetailsList != null) {
for (SkuDetails details : skuDetailsList) {
Log.w(TAG, "Got a SKU: " + details);
}
}
}
});
// Show the UI
displayAnErrorIfNeeded();
}
然后我让监听器收到错误,但连接没有任何问题。
D/StoreListFragment: onCreate
I/StoreListFragment: SkuDetailsResponseListener response code: -1
D/StoreListFragment: onViewCreated
I/BillingManager: onBillingSetupFinished() response: 0
所以我不得不琢磨了一段时间,放弃了去查Play Billing Library的基础——
https://medium.com/exploring-android/exploring-the-play-billing-library-for-android-55321f282929
这就是我找到解决方案的地方,我只是将查询放在成功连接的连接中。我意识到 play billing 库在查询 sku 详细信息之前不会检查连接,还是我在某处做错了,因为教程工作正常?
private void createBillingClient() {
mBillingClient = BillingClient.newBuilder(getActivity()).setListener(this).build();
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(int billingResponse) {
if (billingResponse == BillingClient.BillingResponse.OK) {
Log.i(TAG, "onBillingSetupFinished() response: " + billingResponse);
//setting up a listener for the queries
SkuDetailsResponseListener responseListener = new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(int responseCode,
List<SkuDetails> skuDetailsList) {
Log.i(TAG, "response code: " + responseCode);
}
};
List<String> skuList = Arrays.asList("sku_01", "sku_02");
SkuDetailsParams skuDetailsParams = SkuDetailsParams.newBuilder()
.setSkusList(skuList).setType(BillingClient.SkuType.SUBS).build();
mBillingClient.querySkuDetailsAsync(skuDetailsParams, responseListener);
} else {
Log.w(TAG, "onBillingSetupFinished() error code: " + billingResponse);
}
}
@Override
public void onBillingServiceDisconnected() {
Log.w(TAG, "onBillingServiceDisconnected()");
}
});
}
我尝试了这个逻辑来检查连接是否准备好,然后像普通驱动器一样执行可运行的 - 引用这个 url。看起来逻辑不检查计费连接是否挂起....
https://github.com/zumrywahid/in_app_example
Is Billing Client connected? : false
Client is already in the process of connecting to billing service.
onBillingSetupFinished() error code: 5
最佳答案
BillingManager 构造函数已经开始连接,如果您初始化管理器并立即调用任何将 runnable 传递给 executeServiceRequest(Runnable runnable)
的方法,也会尝试同时开始连接。您可以在构造函数中禁用 startServiceConnection()
,因为连接状态始终在 executeServiceRequest()
中检查并在需要时启动连接。
关于android - 播放计费库连接和查询sku详情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48304031/
我知道这对极客来说似乎很基本。但我想说清楚。 当我想使用 Win32 DLL 时,通常我只调用像 LoadLibrary() 和 GetProcAdderss() 这样的 API。但是最近在用Dire
如何通过带有 FQL 的 javascript 获取用户国家/地区。 FB.API("/me") 不包含国家信息 [我认为],那么我怎样才能在一次查询中获取国家和用户详细信息? 谢谢。 最佳答案 用户
MVC @Html.ActionLink 编辑,如果您运行像 JAWS 这样的合规程序,只需说“编辑”视觉就可以了,但如果您作为视障人士进行查找。数以千计的“编辑”无法帮助您了解自己的位置。我需要合规
我正在尝试使用其 loopback-component-passport 来使 Facebook 登录与环回一起使用。插入。 我已经在providers.json中配置了应用程序详细信息,现在如果我访
收到此错误消息“GIT 配置无效。您需要获得存储库的访问权限才能发布任何更改。详细信息:给定租户的帐户名称不正确。”登录 Azure 数据工厂时。无法发布或保存任何更改。 最佳答案 检查对连接到 Az
我是一名优秀的程序员,十分优秀!