почему мой адмоб не показывает?

0

В консоли нет ошибок, и все работает. Но 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();

Я вижу консольный журнал:

----------addAdMob

что означает, что он входит в функцию addAdMob. И других ошибок нет.

Но вид баннера просто не показывался.

единственный способ сделать это - добавить коды в AppController.mm в didFinishLaunchingWithOptions. Но мне просто интересно, почему это не сработает для моего собственного класса.

Теги:
admob
cocos2d-x

1 ответ

0

Когда я реализовывал AdMob, я показывал объявление только тогда, когда он загружался с сервера. Вы можете добиться этого, GADBannerViewDelegate, особенно интересные методы:

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

Таким образом, вы можете быть уверены, что получили объявление.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню