Flo*_*her 1 android in-app-billing play-billing-library
我根据Google的教程使用Play Billing Library 1.0实现了应用程序内购买.我只有1件商品可以购买,当它解锁时,我会显示一个Toast.LENGTH_SHORT长度的Toast消息.然而,Toast在那里呆了10秒钟,所以我认为它被多次调用.当我通过queryPurchases(如果有人先前购买并在此期间重新安装应用程序)解锁时,它不会发生.
任何人都知道为什么Toast会停留这么久/为什么它被多次调用?
在我的BillingManager类中:
@Override
public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
if (responseCode == BillingClient.BillingResponse.OK) {
for (Purchase purchase : purchases) {
handlePurchases(purchase);
}
mBillingUpdatesListener.onPurchasesUpdated(mPurchases);
} else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {
} else {
}
}
public void handlePurchases(Purchase purchase) {
//here could be validation on own server
mPurchases.add(purchase);
}
Run Code Online (Sandbox Code Playgroud)
主Activity实现BillingUpdatesListener:
@Override
public void onPurchasesUpdated(List<Purchase> purchases) {
for (Purchase purchase : purchases) {
switch (purchase.getSku()) {
case "premium":
unlockPremium();
break;
}
}
}
public void unlockPremium() {
mPremiumUnlocked = true;
savePremiumUnlocked();
Toast.makeText(this, getResources().getString(R.string.premium_congrats), Toast.LENGTH_SHORT).show();
mAdView.setVisibility(GONE);
}
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,你会说当你第一次购买应用内商品时,你会得到多个Toast?
在Billing库的当前版本(1.0)中,发生这种情况是因为系统正在进行多个广播.
例如,如果您在库onPurchaseFinishedReceiver中的第120行查看或断点BillingClientImpl.java,则在购买后至少调用两次.两次都附上了应用内购买数据,但我注意到Action每个广播的意图都不同.
在第一次广播中,行动com.android.vending.billing.PURCHASES_UPDATED只是在第二次广播中proxy_activity_response_intent_action.该库不会过滤掉Action值,因此所有这些广播都会导致您purchasesUpdatedListener被调用.
我没有进一步调查,但我认为我们可以从中得到的是,发生了某种变化,并认为有必要广播这一变化.
为避免多次敬酒,除非您的Premium功能已解锁,否则不要显示Toast.即如果它已经解锁,则只需忽略更改通知.
顺便说一句,完全有可能在Android Studio中调试购买流程.只需使用您的发布密钥签署您的调试apk,并确保apk版本不高于Play商店中的版本.
buildTypes {
debug {
minifyEnabled false
debuggable true
signingConfig signingConfigs.release
}
release {
minifyEnabled false
signingConfig signingConfigs.release
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1604 次 |
| 最近记录: |