为什么我的广告不显示?

why my admob doesn't show?

本文关键字:显示 我的 为什么      更新时间:2023-10-16

控制台中没有错误,似乎一切正常。但bannerView_就是没有显示。

这是我的AdMobObject.h

    #import "AdMobObject.h"
    #import "RootViewController.h"
    #import "GADBannerView.h"
    @class RootViewController;
    @class GADBannerView;
    @interface AdMobObject : UIViewController{
        RootViewController * viewController;
        GADBannerView * bannerView_;
    }
    + (AdMobObject *) shared;
    - (void) addAdMob;
    - ( void) hideAdMob;
    @end

这是我的 AdMobObject.mm

    #import "AdMobObject.h"
    #import "AppController.h"
    #import "RootViewController.h"
    #import "EAGLView.h"
    #import "cocos2d.h"
    @implementation AdMobObject
    static AdMobObject* instance;
    +(AdMobObject *) shared{
        @synchronized(self){
            if( instance == nil ){
                instance = [[self alloc] init];
            }
        }
        return instance;
    }
    - (void) addAdMob{
        NSLog(@"----------addAdMob");
        bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeSmartBannerPortrait];
        CGRect screenRect = [[UIScreen mainScreen] bounds];
        CGFloat screenHeight = screenRect.size.height;
        CGFloat screenWidth = screenRect.size.width;
        viewController.view.frame = CGRectMake(0,0,screenWidth,screenHeight);
        [bannerView_ setFrame:CGRectMake(0,
                                          screenHeight-bannerView_.bounds.size.height,
                                         //0,
                                         bannerView_.bounds.size.width,
                                         bannerView_.bounds.size.height)];
        bannerView_.adUnitID = @"myadmobid";
        bannerView_.rootViewController = viewController;
        [viewController.view addSubview:bannerView_];
        GADRequest *request = [GADRequest request];
        // For testing
        request.testDevices = [NSArray arrayWithObjects:@"mydeviceid", nil];
        [bannerView_ loadRequest:request];
        [viewController.view addSubview:bannerView_];
    }
    - (void) showAdMob{
    }
    - (void) hideAdMob{
            [bannerView_ setHidden:YES];
    }
    @end

然后我有一个类来管理它:

@interface MyGameCenterManager : NSObject
{

}
+(MyGameCenterManager *) shared;
+(void) addAdMob;
+(void) hideAdMob;

@end

下面是类实现:

            @implementation MyGameCenterManager
    static MyGameCenterManager *instance;

    +(MyGameCenterManager*)shared{
        @synchronized(self){
            if(instance == nil){
                instance = [[self alloc] init];
            }
        }
        return instance;
    }
    + (void) addAdMob
    {
        [[AdMobObject shared] addAdMob];
    }
    + (void) hideAdMob{
         [[AdMobObject shared] hideAdMob];
    }

最后,我有cpp类:

包括"cocos2d.h"

    #include "ScriptingCore.h"
    namespace ls{
        class GameCenterBridge: public cocos2d::CCObject{
        public:
            static cocos2d::CCScene* scene();
            virtual bool init();
            CREATE_FUNC(GameCenterBridge);
            void addAdMob();
            void hideAdMob();
        };
    }

我打电话给我的班级:

ls::GameCenterBridge

* class = new ls::GameCenterBridge();class->addAdMob();

我可以看到控制台日志:

----------添加广告Mob

这意味着它进入addAdMob函数。并且没有其他错误。

但是横幅视图就是没有显示。

我让它显示的唯一方法是将代码添加到 didFinishLaunchingWithOptions 中的 AppController.mm 中。但我只是想知道为什么它不适用于我自己创建的类。

当我实施 AdMob 时,我仅在广告从服务器加载时才显示广告。您可以通过实现GADBannerViewDelegate来实现这一点,特别有趣的方法是

  1. - (void)adViewDidReceiveAd:(GADBannerView *)bannerView;
  2. - (void)adView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(GADRequestError *)error

这样,您就可以确定您收到了广告。