2017-04-17 59 views
2

我剛接觸Android獎勵視頻廣告。我試圖用Rewarded Ads: Publishers Get StartedAndroid - 獲獎視頻廣告在應用關閉後不會再次加載

中解釋的方式創建具有獎勵視頻廣告的應用程序,該應用程序中有一個按鈕,允許用戶查看激勵視頻。加載視頻後,該按鈕即可啓用。

我第一次打開應用程序一切正常。我可以按下按鈕查看多個視頻廣告。問題在於,在關閉應用程序後,按下後​​退按鈕並再次打開。然後,廣告再也不會加載。我沒有收到來自RewardedVideoAdListener的消息,我把Toast放在了非常好的功能中。根本沒有反饋。我應該能夠在onRewardedVideoAdFailedToLoad中查看Toast,但即使發生這種情況也沒有。就好像代碼完全無法執行。

正如我所說,我是Android新的視頻廣告獎勵。也許我做錯了什麼,但我無法弄清楚什麼。我已經搜索了互聯網,但我找不到任何答案。有些人在加載廣告時提到了問題,但在應用程序關閉並再次打開後,沒有加載廣告的具體問題。我也檢查了這個問題,但沒有人回答: Question on StackOverflow

我在不同的手機上運行應用程序,我總是發現這個問題。

任何人都可以幫助我嗎?

對不起,我的英文。我不是母語的人。

這裏是我的主要活動代碼:

public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener { 

    private Button mWatchButton; 
    private TextView mRewardLabel; 
    private RewardedVideoAd mAd; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     mWatchButton = (Button)findViewById(R.id.btn_watch); 

     mAd = MobileAds.getRewardedVideoAdInstance(this); 
     mAd.setRewardedVideoAdListener(this); 
     loadAd(); 

     mWatchButton.setEnabled(false); 
     mWatchButton.setOnClickListener(new View.OnClickListener(){ 
       @Override 
       public void onClick(View v) { 
        if(mAd.isLoaded()){ 
         mAd.show(); 
        } 
       } 
      } 
     ); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
    } 

    private void loadAd(){ 
     if(!mAd.isLoaded()){ 
      mAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build()); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public void onRewardedVideoAdLoaded() { 
     mWatchButton.setEnabled(true); 
     Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onRewardedVideoAdOpened() { 
     Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onRewardedVideoStarted() { 
     Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onRewardedVideoAdClosed() { 
     Toast.makeText(this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show(); 
     mWatchButton.setEnabled(false); 
     loadAd(); 
    } 

    @Override 
    public void onRewarded(RewardItem rewardItem) { 
     Toast.makeText(this, "onRewarded", Toast.LENGTH_SHORT).show(); 
     mRewardLabel.setText(String.format(Locale.getDefault(), "You got %d %s!", rewardItem.getAmount(), rewardItem.getType())); 
    } 

    @Override 
    public void onRewardedVideoAdLeftApplication() { 
     Toast.makeText(this, "onRewardedVideoAdLeftApplication", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onRewardedVideoAdFailedToLoad(int i) { 
     Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show(); 
    } 


    @Override 
    public void onPause() { 
     super.onPause(); 
     mAd.pause(this); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     mAd.resume(this); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     mAd.destroy(this); 
    } 


} 

這裏是我的佈局代碼:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.xxxxxx.MainActivity" 
    tools:showIn="@layout/activity_main"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Hello World!" 
     android:id="@+id/textView" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Ver o anúncio" 
     android:id="@+id/btn_watch" 
     android:layout_below="@+id/textView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="58dp"/> 

</RelativeLayout> 

我收到任何警告或錯誤消息在logcat的Android Studio中。

我使用:

classpath 'com.google.gms:google-services:3.0.0' 

dependencies { 
     compile fileTree(dir: 'libs', include: ['*.jar']) 
     testCompile 'junit:junit:4.12' 
     compile 'com.android.support:appcompat-v7:23.4.0' 
     compile 'com.android.support:design:23.4.0' 
     compile 'com.google.firebase:firebase-ads:9.4.0' 
    } 

apply plugin: 'com.google.gms.google-services' 

回答

0

當應用程序進入前景再次請求其他廣告:

@Override 
public void onResume() { 
    super.onResume(); 
    loadAd(); 
} 
+1

謝謝!這真是一個真正的救星!儘管如此,我還是需要做一些更改才能使其發揮作用。看起來loadAd()函數中的!mAd.isLoaded()總是返回true,所以廣告從不重新初始化。奇怪...所以我的新loadAd()函數是: private void loadAd(){ // if (!mAd.isLoaded()){ mAd = null;mAd = MobileAds.getRewardedVideoAdInstance(this); mAd.setRewardedVideoAdListener(this); mAd.loadAd(「ca-app-pub-3940256099942544/5224354917」,new AdRequest.Builder()。build()); //} } –

相關問題