Google 자습서에 따라 Play 청구 라이브러리 1.0으로 앱내 구매를 구현했습니다. 구매할 상품이 하나 뿐이며 잠금 해제되면 Toast.LENGTH_SHORT 길이의 토스트 메시지를 보여줍니다. 그러나 Toast는 10 초 동안 거기에 머물러 있기 때문에 여러 번 호출됩니다. queryPurchases를 통해 잠금을 해제하면 발생하지 않습니다 (다른 사용자가 먼저 구입하여 그 동안 앱을 다시 설치 한 경우).앱 구매시 여러 번 호출 된 것 같습니다
누구나 토스트가 왜 그렇게 오래 머물러 있는지/여러 번 호출되는 이유를 알 수 있습니까?
@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);
}
주요 활동은 BillingUpdatesListener 구현 : 내 BillingManager 클래스 내부
@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);
}
여러 번 호출했는지 여부를 확인할 수 있도록 디버그하십시오. – Pelocho
어떻게? Android Studio 대신 Play 스토어에서 다운로드 한 실제 앱으로 만 구매할 수 있습니다. –
쓰레기. 테스트 구매도 할 수 있습니다. RTFM –