And*_*eaF 7 android android-billing
我有
BillingFlowParams purchaseParams = BillingFlowParams.newBuilder().setSku(skuId).setType(billingType).setOldSkus(oldSkus).build();
Run Code Online (Sandbox Code Playgroud)
但现在
setSku
setType
setOldSkus
Run Code Online (Sandbox Code Playgroud)
都被弃用了。
我想更新旧代码而不发布会干扰当前订阅和未来订阅的更新。我应该如何正确更新上述代码?
目前我使用aString myProduct="my_newsweek_1";
来识别购买和BillingClient.SkuType.SUBS识别类型,我只是简单地传递null给setOldSkus
文档报告说
setSku (String sku)并setType (String type)已被替换为setSkuDetails(SkuDetails)
(此SkuDetails对象String在构造函数中仅接收一个作为参数并抛出,JSONException因此似乎它不适用于旧String常量)
和
setOldSkus(ArrayList<String> oldSkus) 已被替换为 setOldSku(String)
您需要 BillingFlowParams launchBillingFlow()。您可以使用自己的 json 字符串创建 SkuDetails,但这不是预期的方式。您应该首先致电querySkuDetailsAsync()并获取必要的 skuDetailsList,然后将它们用于launchBillingFlow()
public void querySkuDetailsAsync(@SkuType final String itemType, final List<String> skuList, final SkuDetailsResponseListener listener) {
Runnable queryRequest = new Runnable() {
@Override
public void run() {
// Query the purchase async
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(itemType);
mBillingClient.querySkuDetailsAsync(params.build(),
new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
//use skuDetails in skuDetailsList
}
});
}
};
executeServiceRequest(queryRequest);
}
public void initiatePurchaseFlow(final SkuDetails skuDetails) {
Runnable purchaseFlowRequest = new Runnable() {
@Override
public void run() {
Log.d(TAG, "Launching in-app purchase flow.");
BillingFlowParams purchaseParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build();
mBillingClient.launchBillingFlow(mActivity, purchaseParams);
}
};
executeServiceRequest(purchaseFlowRequest);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2696 次 |
| 最近记录: |