android - BillingFlowParams.Builder setSkuDetails 用于测试静态 Google Play 计费响应
问题描述
我正在使用三个保留的产品 ID 测试应用内购买,以测试静态 Google Play 结算响应:
- android.test.purchased
- android.test.取消
- android.test.item_unavailable
但是,setSku
似乎setType
在BillingFlowParams.Builder
课堂上已被弃用。相反,我们应该使用setSkuDetails(SkuDetails)
.
我应该如何更改BillingFlowParams
示例代码以SkuDetails
用于测试产品 ID?
BillingFlowParams flowParams = BillingFlowParams.newBuilder()
.setSku(skuId)
.setType(SkuType.INAPP)
.build();
int responseCode = mBillingClient.launchBillingFlow(flowParams);
解决方案
您应该从 BillingClient.querySkuDetailsAsync 获取 SkuDetails,示例代码可能如下所示:
private BillingClient mBillingClient;
// ....
mBillingClient = BillingClient.newBuilder(this).setListener(new PurchasesUpdatedListener() {
@Override
public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
if (responseCode == BillingClient.BillingResponse.OK
&& purchases != null) {
// do something you want
} else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {
} else {
}
}
}).build();
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponseCode) {
if (billingResponseCode == BillingClient.BillingResponse.OK) {
// The billing client is ready. You can query purchases here.
List<String> skuList = new ArrayList<>();
skuList.add("android.test.purchased");
SkuDetailsParams skuDetailsParams = SkuDetailsParams.newBuilder()
.setSkusList(skuList).setType(BillingClient.SkuType.INAPP).build();
mBillingClient.querySkuDetailsAsync(skuDetailsParams,
new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
BillingFlowParams flowParams = BillingFlowParams.newBuilder()
.setSkuDetails(skuDetailsList.get(0))
.build();
int billingResponseCode = billingClient.launchBillingFlow(SkuActivity.this, flowParams);
if (billingResponseCode == BillingClient.BillingResponse.OK) {
// do something you want
}
}
});
}
}
@Override
public void onBillingServiceDisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
}
});
你也可以看看https://developer.android.com/google/play/billing/billing_library_overview
推荐阅读
- javascript - 无法读取未定义的属性(读取“项目”)
- python - AttributeError:“pyarrow._fs.PyFileSystem”对象没有属性“is_file”
- aws-cdk - cdk 从 IBucket 参考调用 CfnBucket(第一级)
- go - 在 GORM 中首次迁移时插入种子数据
- python - AttributeError:模块“streamlit”没有属性“metric”
- javascript - 从 JSON 创建 python 文件并使用 Javascript 将其压缩为 tar.gz 文件
- c# - 消费者多次消费相同的消息 - masstransit
- python - Udacity 中的发电机练习不被认为是正确的?
- rust - 如何使 trait 方法采用 &Self 参数
- flutter - 参数类型“Widget”不能分配给参数类型“PreferredSizeWidget?”