我的问题是,无论是否在测试模式下,我的应用程序中根本没有显示广告。我将针对测试模式来回答这个问题,一旦我能做到这一点,我就会担心直播广告。
发展信息
我正在使用Eclipse进行开发。
我在我的Android应用程序中使用Google Play服务和Admob设置广告,如Google提供的在线留档中所述。
我使用addTestDevice(“xxxxxxxxxxxxxxxx”)添加了我的设备ID,并多次检查散列设备ID以确保其正确。
问题(日志信息见下文)
当我在我的设备上运行应用程序时,根本不会显示任何广告。即使我将设备添加为测试设备,也会发生这种情况。
我到处寻找,发现了许多类似的问题,但还没有找到这个具体问题的答案。
LogCat输出
10-28 13:56:41.659: I/Ads(1704): Starting ad request.
10-28 13:56:42.187: I/Ads(1704): No fill from ad server.
10-28 13:56:42.187: W/Ads(1704): Failed to load ad: 3
10-28 13:56:42.199: W/Ads(1704): No GMSG handler found for GMSG: gmsg://mobileads.google.com/jsLoaded?google.afma.Notify_dt=1414504602197
我的活动
package bb.hoppingbird;
import org.cocos2d.layers.CCScene;
import org.cocos2d.nodes.CCDirector;
import org.cocos2d.opengl.CCGLSurfaceView;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;
import android.app.Activity;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.view.ViewPager.LayoutParams;
import android.util.DisplayMetrics;
import android.view.KeyEvent;
import android.widget.RelativeLayout;
import android.widget.Toast;
public class MainActivity extends Activity {
private CCGLSurfaceView mGLSurfaceView;
//<!-- Admob Ads Using Google Play Services SDK -->
private static final String AD_UNIT_ID = "ca-app-pub-xxxxxxxxxxxxxxxxxxxx";
private static final String AD_INTERSTITIAL_UNIT_ID = "ca-app-pub-xxxxxxxxxxxxxxxxxxxx";
/** The Admob ad. */
private InterstitialAd interstitialAd = null;
public AdView adView = null;
public static MainActivity app;
public void onCreate(Bundle savedInstanceState)
{
app = this;
super.onCreate(savedInstanceState);
// set view
mGLSurfaceView = new CCGLSurfaceView(this);
//Ads ----------------
// Create the adView
RelativeLayout layout = new RelativeLayout(this);
layout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
//<!-- Ads Using Google Play Services SDK -->
adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId(AD_UNIT_ID);
// Add the adView to it
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
adView.setLayoutParams(params);
layout.addView(mGLSurfaceView);
layout.addView(adView);
setContentView(layout);
//New AdRequest
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("0D47C6944503F0284666D16BB79BF684")
.build();
// Start loading the ad in the background.
adView.loadAd(adRequest);
//-----------------------------------------------------Interstitial Add
// Create an Interstitial ad.
interstitialAd = new InterstitialAd(this);
interstitialAd.setAdUnitId(AD_INTERSTITIAL_UNIT_ID);
interstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
interstitialAd.show();
}
@Override
public void onAdFailedToLoad(int errorCode) {
Toast.makeText(getApplicationContext(), "Interstitial Ads loading failed", Toast.LENGTH_SHORT).show();
}
});
// Load the interstitial ad.
//showInterstitialAds();
//----------------------
// set director
CCDirector director = CCDirector.sharedDirector();
director.attachInView(mGLSurfaceView);
director.setAnimationInterval(1/60);
// get display info
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
G.display_w = displayMetrics.widthPixels;
G.display_h = displayMetrics.heightPixels;
G.scale = Math.max(G.display_w/1280.0f, G.display_h/800.0f);
G.width = G.display_w / G.scale;
G.height = G.display_h / G.scale;
// get data
SharedPreferences sp = CCDirector.sharedDirector().getActivity().getSharedPreferences("GameInfo", 0);
G.music = sp.getBoolean("music", true);
G.sound = sp.getBoolean("sound", true);
// create sound
G.soundMenu = MediaPlayer.create(this, R.raw.menu);
G.soundMenu.setLooping(true);
G.soundGame = MediaPlayer.create(this, R.raw.game);
G.soundGame.setLooping(true);
G.soundCollide = MediaPlayer.create(this, R.raw.collide);
G.soundJump = MediaPlayer.create(this, R.raw.jump);
G.soundLongJump = MediaPlayer.create(this, R.raw.long_jump);
G.soundSpeedDown = MediaPlayer.create(this, R.raw.speed_down);
G.soundSpeedUp = MediaPlayer.create(this, R.raw.speed_up);
G.soundDirection = MediaPlayer.create(this, R.raw.direction_sign);
G.soundClick = MediaPlayer.create(this, R.raw.menu_click);
G.soundCollect = MediaPlayer.create(this, R.raw.collect);
G.bgSound = G.soundMenu;
// show menu
CCScene scene = CCScene.node();
scene.addChild(new MenuLayer(true));
director.runWithScene(scene);
}
@Override
public void onPause()
{
if (adView != null) {
adView.pause();
}
super.onPause();
G.bgSound.pause();
CCDirector.sharedDirector().onPause();
}
@Override
public void onResume()
{
super.onResume();
if (adView != null) {
adView.resume();
}
if( G.music ) G.bgSound.start();
CCDirector.sharedDirector().onResume();
}
@Override
public void onDestroy()
{
// Destroy the AdView.
if (adView != null) {
adView.destroy();
}
super.onDestroy();
G.bgSound.pause();
CCDirector.sharedDirector().end();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if( keyCode == KeyEvent.KEYCODE_BACK )
{
CCDirector.sharedDirector().onKeyDown(event);
return true;
}
return super.onKeyDown(keyCode, event);
}
public void showInterstitialAds()
{
runOnUiThread(new Runnable() {
public void run() {
AdRequest interstitialAdRequest = new AdRequest.Builder().build();
interstitialAd.loadAd(interstitialAdRequest);
}
});
}
}
您需要使用Google为当前测试设备提供的ID。您可以在logcat中找到它,只需找到如下内容:
Ads: Use AdRequest.Builder.addTestDevice("903A70A3D439E256BAED43E65A79928E") to get test ads on this device.
只有当特定应用程序从playstore暂停时,问题才会出现。也许您可以尝试更改包名称,也可以使用新的Admob Id。也有可能由于符合要求而暂停特定的Admob Id。
如果您创建adunit并立即使用它可能会显示此错误,请尝试在30分钟或更长时间后加载广告。
我知道这个话题已经贴了很多次了,但这个问题没有真正的解决办法。 最近,在一些应用程序中,我决定进行更新。这是将库版本(admob)更改为最新版本的一次小更新。我还将targetSdkVersion从25更改为26。几天后,我检查了admob上的统计数据,所有这些应用的填充率都降到了0!请求的数量也增加了。用于横幅和间隙。其他应用程序不受影响。 我认为有一些愚蠢的错误,但我在代码中找不到任何问题。
您好,我在我的应用程序中使用了最新的Google Admob Sdk,用于DoubleClick for Publisher(DFP)横幅广告。当运行我的应用程序时,一切正常,没有错误,但我从广告服务器收到的logcate消息为未填充,未能加载广告:3,并且我在模拟器和手机中也看不到任何广告。有什么不对的,请告诉我是否有人知道如何处理这种问题。 提前谢谢。我的代码部分:
每当我尝试使用AdMob加载广告时,我都会得到以下错误
我有一个应用程序,我正在使用admob横幅。现在我想在点击按钮时显示间隙广告。我的应用程序有两个活动,我想在第二个活动上显示间隙广告。第二个活动有一个返回到第一个活动的按钮,我想在单击按钮后显示广告。我可以在点击按钮时显示广告,但当用户关闭广告或按下后退按钮时,广告仍会保留在第二个活动中,这就是我面临的问题。 第二个活动代码:- 我想当用户点击按钮时,广告应该被看到,当他关闭广告时,他应该返回到第
我正在尝试使用Active Directory凭据执行Spring SecurityKerberos,如http://docs.Spring.io/spring-security-kerberos/docs/1.0.1.release/reference/htmlsingle/#samples-sec-server-win-auth中所述。我想说,我已经把大部分东西都放下了(SPN、键控等)。现在
我正在使用Admob SDK从Android上的DFP加载横幅广告。 我正在使用此页面中定义的XML方法加载广告:https://developers.google.com/mobile-ads-sdk/docs/dfp/fundamentals 当我运行应用程序时 当我切换到测试模式时 然后我可以看到谷歌测试横幅成功。所以假设我的SDK集成是正确的,如果“无效的Ad请求”又会怎样呢?