2017-01-26 53 views
0

我试图在我的应用中显示奖励视频广告,并且每次尝试加载广告时都会直接转到“未能加载广告”方法。加载每个设备不同错误的奖励视频广告时出现错误

对于我的手机,我得到的错误:

W/Ads: Fail to instantiate adapter com.google.ads.mediation.chartboost.ChartboostAdapter 
     android.os.RemoteException 
      at com.google.android.gms.internal.zzgy.zzbx(Unknown Source) 
      at com.google.android.gms.internal.zzgy.zzbw(Unknown Source) 
      at com.google.android.gms.internal.zzgy.zzbu(Unknown Source) 
      at com.google.android.gms.internal.zzgz$zza.onTransact(Unknown Source) 
      at android.os.Binder.transact(Binder.java:387) 
      at com.google.android.gms.ads.internal.mediation.client.d.a(:com.google.android.gms.DynamiteModulesA:94) 
      at com.google.android.gms.ads.internal.reward.c.b(:com.google.android.gms.DynamiteModulesA:220) 
      at com.google.android.gms.ads.internal.reward.mediation.j.a(:com.google.android.gms.DynamiteModulesA:1140) 
      at com.google.android.gms.ads.internal.util.b.run(:com.google.android.gms.DynamiteModulesA:19) 
      at com.google.android.gms.ads.internal.util.y.call(:com.google.android.gms.DynamiteModulesA:1055) 
      at com.google.android.gms.ads.internal.util.z.run(:com.google.android.gms.DynamiteModulesA:75) 
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
      at java.lang.Thread.run(Thread.java:818) 

对于我使用的模拟器,我得到的错误:

There was a problem getting an ad response. ErrorCode: 0 

另外,我假设,这个问题是不是使用AdMob因为我已经实施了没有问题的横幅广告。我正在使用Chartboost作为冥想。

import com.google.ads.mediation.admob.AdMobAdapter; 
import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.AdView; 
import com.google.android.gms.ads.MobileAds; 
import com.google.android.gms.ads.reward.RewardItem; 
import com.google.android.gms.ads.reward.RewardedVideoAd; 
import com.google.android.gms.ads.reward.RewardedVideoAdListener; 
import com.chartboost.sdk.Chartboost; 
import com.chartboost.sdk.CBLocation; 
import com.chartboost.sdk.ChartboostDelegate; 

public class Settings extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener, RewardedVideoAdListener { 

    SharedPreferences data; 
    final String filename = "Data"; 

    Button btnAds; 
    Button btnResetData; 
    Button btnHelp; 
    long adtime; 

    private RewardedVideoAd mAd; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Chartboost.startWithAppId(this, "I have insterted my app id here", "and my app signature here"); 
     Chartboost.onCreate(this); 

     setContentView(R.layout.activity_settings); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     btnAds = (Button) findViewById(R.id.btnAds); 
     btnResetData = (Button) findViewById(R.id.btnResetData); 
     btnHelp = (Button) findViewById(R.id.btnHelp); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 

     btnAds.setText("Loading ad..."); 

     // Load an ad into the AdMob banner view. 
     AdView adView = (AdView) findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder() 
       .setRequestAgent("android_studio:ad_template").build(); 
     adView.loadAd(adRequest); 

     mAd = MobileAds.getRewardedVideoAdInstance(this); 
     mAd.setRewardedVideoAdListener(this); 
     loadRewardedVideoAd(); 
    } 
    private void loadRewardedVideoAd() { 
      mAd.loadAd("I have inserted my app unit id here", new AdRequest.Builder().build()); 
    } 
} 

我也得到了其他“奖励后,”方法和“后退”方法

回答

0

后看起来好像你正试图初始化Chartboost SDK旁边的AdMob中介。这在我自己的项目中已经被证明是相当有问题的,因为SDK和SDK适配器不能很好地相互协作。

您只需要使用AdMob方法调用Chartboost,尝试单独初始化将导致Chartboost适配器失败。

鉴于AdMob只是在广告网络SDK中调用它们(这会导致下载资产令人厌烦),所以这有点令人讨厌,但这就是AdMob的设计方式。

省略Chartboost startwith方法并将其替换为普通AdMob方法以初始化AdMob SDK应解决此问题。

+0

这只是使用MobileAds方法吗?我不确定如何初始化AdMob SDK,因为我找不到任何东西。对不起,我在这个哈哈里面有点白痴。非常感谢你! –

+0

是的,这只是使用Google Mobileads方法。根据他们的文档,初始化SDK的调用是: 'MobileAds.initialize(getApplicationContext(),“ca-app-pub-3940256099942544〜3347511713”);' 当然,所讨论的广告单元ID将会是您的拥有。 –

+0

谢谢!但是,测试广告仍然没有显示,并且出于某种原因,在Chartboost和AdMob控制台中,他们都表示,对于广告单元,它具有大约42个“启动”,但没有展示。我是否会将广告单元ID或应用ID添加到该通话中? –