gpt4 book ai didi

android - 使用 SharedPreferences 禁用应用内购买广告

转载 作者:行者123 更新时间:2023-11-29 17:17:05 26 4
gpt4 key购买 nike

我正尝试在应用内购买时移除应用中的 AdMob 广告。我已经有了隐藏和禁用广告的代码。我还实现了应用内结算。如果用户进行了购买,我只需要找到一种方法来隐藏和禁用广告。

我在 SharedPreferences 中存储了一个 bool 值,在应用内购买成功后,它应该永久删除应用中的广告。 这行得通,但是当应用关闭并重新打开时,广告又回来了,您无法再次进行购买。

onCreate()方法中:

    mHelper = new IabHelper(this, base64EncodedPublicKey);

mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {

} else {

}
}
});

prefs = this.getSharedPreferences("com.wsandhu.conjugation", Context.MODE_PRIVATE);

if (adFree) {
prefs.edit().putBoolean("adFree", true).commit();
} else {
adFree = prefs.getBoolean("adFree", false);
}

应用内结算实现:

/* FOR IN-APP BILLING */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (!mHelper.handleActivityResult(requestCode,
resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener =
new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
if (result.isFailure()) {
// Handle error
return;
} else if (purchase.getSku().equals(ITEM_SKU)) {

// Sets purchased boolean to true
adFree = true;

// Restart app
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
}
};

IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener
= new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result,
Inventory inventory) {

if (result.isFailure()) {
// Handle failure
} else {
Purchase purchase = inventory.getPurchase(ITEM_SKU);
if (purchase != null) {

} else {

}
}
}
};

public void buyFullVersion() {
mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001,
mPurchaseFinishedListener, "mypurchasetoken");
}

我真的不知道我做错了什么......我已经将应用程序上传到 Google Play alpha 测试十多次了,每次等待两个小时我都会感到有点沮丧不起作用。 :P 帮助?

最佳答案

这里:

adFree = true;

当用户在关闭 adFree 变量值重置为默认值 后再次打开应用程序时导致问题。

通过在购买成功时更新 SharedPreferences 中的状态来完成此操作:

  ...
}else if (purchase.getSku().equals(ITEM_SKU)) {
//save value in SharedPreferences here
prefs.edit().putBoolean("adFree", true).commit();
}

并在 onCreate 方法中检查 adFree 为:

prefs = this.getSharedPreferences("com.wsandhu.conjugation",Context.MODE_PRIVATE);

if(prefs.contains("adFree")){
if(prefs.getBoolean("adFree", false)){
// disable ads here
}else{
// enable ads here
}
}else{
// enable ads
}

关于android - 使用 SharedPreferences 禁用应用内购买广告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38409114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com