Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应用内付费广告删除:不显示广告_Java_Android_In App Purchase_Admob_In App Billing - Fatal编程技术网

Java 应用内付费广告删除:不显示广告

Java 应用内付费广告删除:不显示广告,java,android,in-app-purchase,admob,in-app-billing,Java,Android,In App Purchase,Admob,In App Billing,我正在尝试在我的应用中实现应用内计费,应用内计费本身工作正常 但是,虽然它应该只为高级用户禁用广告,但我不知何故完全禁用了它们。我将发布我的代码,以便更好地让您理解: 这是我的IabPurchaseFinished()方法: @Override public void onIabPurchaseFinished(IabResult result, Purchase info) { if (!verifyDeveloperPayload(info)) { Toast.ma

我正在尝试在我的应用中实现应用内计费,应用内计费本身工作正常

但是,虽然它应该只为高级用户禁用广告,但我不知何故完全禁用了它们。我将发布我的代码,以便更好地让您理解:

这是我的
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();
    }
}
如您所见,它将字符串值状态保存为已购买的SharedReferences

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

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();
            }
        });
    }
如您所知,我首先检查我的
*SharedReferences*
以查看是否有“状态”,如果没有,我将其设置为“自由”

然后我在
if
声明中发布了我的广告:

if (prefs.equals("free"))
因此,我认为如果SharedReferences中的字符串是“免费”的,或者换句话说,它不是“购买”的,那么它们就会显示出来,这意味着用户没有在应用程序中购买

问题是,无论我是否使用具有应用程序内的帐户访问,广告都不会显示。你知道我该怎么修吗?


显然,我已经在开发者控制台上上传了签名的Apk进行了测试,所有设置都是根据谷歌的指导原则进行的。

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

if (prefs.equals("free"))
prefs
定义为
SharedReferences-prefs
,它从来不是
字符串,这意味着它总是
false

你真正想写的是这张支票:

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

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