移除应用内结算广告:广告未展示

时间:2016-09-10 20:07:18

标签: java android in-app-purchase admob in-app-billing

我正在尝试在我的应用中实施应用内结算,而应用内结算本身也能正常运行。

但是,虽然它应该仅针对高级用户禁用广告,但我完全禁用了它们。我会发布我的代码,以便让您更好地理解:

这是我的IabPurchaseFinished()方法:

@Override
public void onIabPurchaseFinished(IabResult result, Purchase info) {

    if (!verifyDeveloperPayload(info)) {
        Toast.makeText(this, R.string.error_purchasing, Toast.LENGTH_LONG).show();
    }

    Toast.makeText(this, R.string.premium_bought, Toast.LENGTH_LONG).show();

    if (info.getSku().equals("chords_premium")) {

        /** salva isPremium tra SharedPreferences */
        SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putString("status", "purchased");
        editor.apply();
    }
}

如您所见,它将字符串值 status 保存为 SharedPreferences 已购买

现在在我有我的广告的活动中,我这样做了:

final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    prefs.getString("status", "free");


    /** gestisce le pubblicita */
    if (prefs.equals("free")) {
        MobileAds.initialize(getApplicationContext(), "ca-app-pub-6723047396589178/2654753246");

        AdView listBanner = (AdView) findViewById(R.id.chords_list_banner);
        AdRequest adRequest = new AdRequest.Builder().build();
        listBanner.loadAd(adRequest);

        /** carica Ad a tutto schermo */
        chordsListAd = new InterstitialAd(this);
        chordsListAd.setAdUnitId("ca-app-pub-6723047396589178/7447672046");
        requestNewInterstitial();


        chordsListAd.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                requestNewInterstitial();
            }
        });
    }

您可以先检查我的*SharedPreferences*以查看是否有“状态”,如果没有,我将其设置为“free” < / p>

然后我将广告放在if声明中:

if (prefs.equals("free"))

因此,我认为如果SharedPreferences中的字符串是“免费”,或者换句话说,它不是“已购买”,则表示用户尚未购买应用程序。

问题在于,无论我是否使用具有In App的帐户进行访问,都不会显示广告。关于我如何解决它的任何想法?

显然,我已经在开发者控制台上上传了Signed Apk进行了测试,并根据谷歌的testing In-App Billing指南设置了所有内容。

1 个答案:

答案 0 :(得分:1)

你在这里犯了一个小错误:

if (prefs.equals("free"))

prefs定义为SharedPreferences prefs,永远不是String,这意味着它始终为false

你真正想要写的是这个检查:

String status = prefs.getString("status", "free");

/** gestisce le pubblicita */
if (status.equals("free")) {