当前位置: 首页 > 知识库问答 >
问题:

Admob间隙是假的

柳项明
2023-03-14

我正在尝试在ios上实施Admob插播广告。

这是我到目前为止所拥有的,这是我第一次接触目标-c,所以请善良。

// Simple Admob Interstitial support for Monkey - IOS

// admobInterstitial.ios.h

#import "GADInterstitial.h"


class AdmobInterstitial {

    // the kind of "singleton"
    static AdmobInterstitial *_admob;
    // the ad
    GADInterstitial *_interstitialAd;
    // ad Unit ID
    NSString *adUnitId;

public:
    AdmobInterstitial();

    // creates an instance of the object and start the thread
    static AdmobInterstitial *GetAdmobInterstitial(String adUnitId);

    // displays the ad to the user if it is ready
    void ShowAd();
};


// admobInterstitial.ios.cpp

AdmobInterstitial *AdmobInterstitial::_admob;

AdmobInterstitial::AdmobInterstitial():_interstitialAd(0) {

}

AdmobInterstitial *AdmobInterstitial::GetAdmobInterstitial(String adUnitId) {
    if( !_admob ) _admob=new AdmobInterstitial();
    _admob->adUnitId = adUnitId.ToNSString();
    return _admob;
}

void AdmobInterstitial::ShowAd() {
    // create ad (should this go here or earlier?)
    _interstitialAd = [[GADInterstitial alloc] init];

    if (_interstitialAd) {
        _interstitialAd.adUnitID = adUnitId;
        [_interstitialAd loadRequest:[GADRequest request]];

        if (_interstitialAd.isReady) {
            BBMonkeyAppDelegate *appDelegate=(BBMonkeyAppDelegate*)[[UIApplication sharedApplication] delegate];
            UIViewController *rootViewController = appDelegate->viewController;
            [_interstitialAd presentFromRootViewController:rootViewController];
        }
    }
}

在玩家死亡并单击重新启动按钮后,我在游戏中调用ShowAd()。目前,\u interstitalad。isReady不会像真的那样回来。

这是我开始使用的文档https://developers.google.com/mobile-ads-sdk/docs/admob/advanced#ios

它说“您可以随时调用loadRequest:但是,您必须等待GadInterstitalDelegate的InterstitalIDReceiveAD:被调用,然后才能显示创意。”

我想这就是我遇到的问题。我想我是在InterstitalIDreceivead之前调用loadRequest。然而,文档没有显示如何等待调用此方法的示例。

有人能帮忙吗?

编辑:现在可以工作并在我第一次调用ShowAd()时显示广告,但是在第一次调用此函数后任何时候都不会显示广告

// Simple Admob Interstitial support for Monkey - IOS

// admobInterstitial.ios.h

#import "GADInterstitial.h"


class AdmobInterstitial {

    // the kind of "singleton"
    static AdmobInterstitial *_admob;
    // the ad
    GADInterstitial *_interstitialAd;
    // ad Unit ID
    NSString *adUnitId;

    void loadAd();

public:
    AdmobInterstitial();

    // creates an instance of the object and start the thread
    static AdmobInterstitial *GetAdmobInterstitial(String adUnitId);

    // displays the ad to the user if it is ready
    void ShowAd();
};


// admobInterstitial.ios.cpp

AdmobInterstitial *AdmobInterstitial::_admob;

AdmobInterstitial::AdmobInterstitial():_interstitialAd(0) {

}

AdmobInterstitial *AdmobInterstitial::GetAdmobInterstitial(String adUnitId) {
    if( !_admob ) _admob=new AdmobInterstitial();
    _admob->adUnitId = adUnitId.ToNSString();
    _admob->loadAd();
    return _admob;
}

void AdmobInterstitial::loadAd() {

    // testing
    _interstitialAd = [[GADInterstitial alloc] init];

    if (_interstitialAd) {
        _interstitialAd.adUnitID = adUnitId;
        [_interstitialAd loadRequest:[GADRequest request]];
    }
    // end testing

}

void AdmobInterstitial::ShowAd() {
    // create ad (should this go here or earlier?)
    //_interstitialAd = [[GADInterstitial alloc] init];

    if (_interstitialAd) {
        //_interstitialAd.adUnitID = adUnitId;
        //[_interstitialAd loadRequest:[GADRequest request]];

        if (_interstitialAd.isReady) {
            BBMonkeyAppDelegate *appDelegate=(BBMonkeyAppDelegate*)[[UIApplication sharedApplication] delegate];
            UIViewController *rootViewController = appDelegate->viewController;
            [_interstitialAd presentFromRootViewController:rootViewController];
        }
    }
}

共有1个答案

邵飞鸿
2023-03-14

好啊首先,当没有可显示的广告时,isawardy==false将出现。这是自然条件。您可以通过使用中介来缓解它。

但在您的情况下,很可能没有可用的广告显示,因为在提出该问题之前,没有足够的时间发送广告请求并收到回复。

您需要做的是尽早调用loadAd。游戏第一次开始的时候。然后在游戏的自然转折点(玩家死亡后)检查isAdReady是否为真,如果是,则显示广告。

当您显示广告或游戏再次启动时,请再次调用loadAd,以便下次要显示广告时,您可以再次准备好广告。

 类似资料:
  • 这相当长,但可能是一个非常容易修复的问题。大部分都是代码,只需跳到底部,就会有一个tl;博士 嘿,所以我已经遵循了大约10个关于让Admob间质在我的Swift Spritekit游戏中工作的教程。除了我看到的所有教程都使用带有按钮的IBAction。目前,我希望广告每隔一段时间在菜单上弹出一次。(只是为了开始,我可能会在以后更改它)。这一切都非常完美,但是一旦我点击播放按钮(进入不同的场景),然

  • 今天我注册了adMob,开始在我的应用程序中制作adMob广告。第一个是一个游戏(带有viewcontrollers),我想在游戏结束后在屏幕上显示一个间隙广告,所以我想在游戏结束后加载间隙广告(只有在游戏结束后才能访问此视图,并且游戏持续一分钟,所以它不应该出现得太频繁) 我看过很多教程,在youtube和admob网站上,我有很多问题,比如:即使我导入了它,也找不到admob框架,我在构建时禁

  • 我正在遵循本教程 到目前为止,当我点击按钮时,它就可以工作了。然而,我似乎无法让它在viewDidLoad上显示中间广告。 这就是我所拥有的: 控制台不断向我显示: 2016-02-04 22:27:51.855 GoogleAdamObjutorial[3394:56415]要获取此设备上的测试广告,请致电:request。testDevices=@[kGADSimulatorID]; 单击按钮

  • 我正在尝试使用静态类加载Admob间隙广告,以便在方便的时间内显示它。 我创建了一个加载间隙的方法: 然后在我的ViewController中: 这是第一次工作,但之后我在Interstitual中遇到以下错误。DidFailToReceiveAd: 不会发送请求,因为已使用间隙对象 如何修复它?

  • 我成功地在我的应用程序中实现了AdMob中间广告,但唯一的问题是它们不可点击。 下面是我的AdMob.java类: 和MainPageActivity.java文件: 我不知道当用户升级并按下播放按钮(这将引导他进入下一个级别)时,该如何显示间隙广告。当他按下home键时,间隙广告就会出现,这会把他带到MainActivity屏幕上。 有人能帮我把广告点击一下吗?另外,有什么建议,如何添加的间隙广

  • 我正在完成一个视频应用程序,我在离开视频activity时显示间隙广告。我只想每X分钟显示一次,但似乎每次我离开那个屏幕时它都在显示。 这是我的activity密码。 onCreate: onbackpressed: 当然,在admob中是这样设置的: 注意:我的应用程序没有发布,所以它正在显示“预览”o“示例”。我正在使用我的广告单元ID: 谢谢,