2016-09-10 18 views
1

私のアプリでアプリ内課金を実装しようとしていますが、アプリ内課金自体がうまく機能しています。アプリ内課金広告削除:広告が表示されない

ただし、広告はプレミアムユーザーのみ無効にする必要がありますが、私は何とか完全に無効にしました。私はより良いあなたが理解できるように私のコードを投稿します:

これは私のIabPurchaseFinished()方法です:あなたは、それは文字列値状態を購入しとしてにSharedPreferencesを節約できます見ることができるように

@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(); 
    } 
} 

私はこのようにそれをしなかった私の広告を持っている活動で、今

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*を確認することができたよう、私はそこにはない場合に設定 "自由"

は、その後、私はif声明の中で、私の広告を持っている:

if (prefs.equals("free")) 

SharedPreferencesの文字列が「フリー」である、つまり「購入済み」でない場合、つまりユーザーがinアプリを購入していないことが示されていると考えられます。

問題は、In Appを持つアカウントでアクセスしても、広告が表示されないことです。どのように私はそれを修正することができますか?

明らかに私は、Developer's ConsoleにアップロードされたSigned Apkを使ってテストしましたが、すべてがgoogleのtesting In-App Billingガイドラインに従って設定されています。

答えて

1

あなたはここに小さなミスをした:

if (prefs.equals("free")) 

prefsSharedPreferences prefs定義されているようStringことはありません、これはそれが常にfalseある意味です。

何が本当に書きたいことは、このチェックです:

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

/** gestisce le pubblicita */ 
if (status.equals("free")) { 
関連する問題