Интеграция Admob в iOS Cocos2dx v3

Я интегрирую рекламу в cocos2dx v3. Я пробовал 2 учебника для этого, но я получаю ошибку в нем.. Мое приложение всегда сбой во время выполнения. Ссылка 1

Ссылка 2

Вот какую ошибку я получаю

редактировать

Код

    #import "BannerViewController.h"
#import "GADBannerView.h"

@interface BannerViewController () <GADBannerViewDelegate>

@end

@implementation BannerViewController {
    GADBannerView *_bannerView;
    UIViewController *_contentController;
    Boolean _bannerLoaded;
}

- (instancetype)initWithContentViewController:(UIViewController *)contentController
{
    self = [super init];
    if (self != nil) {

        _bannerView = [[GADBannerView alloc] initWithAdSize: kGADAdSizeSmartBannerPortrait];
        _bannerView.adUnitID = @"ca-app-pub-1907540021489164/5304609731"; //REPLACE WITH YOUR OWN PUBLISHER ID
        _bannerView.delegate = self;
        _contentController = contentController;
        _bannerLoaded = NO;

    }
    return self;
}


- (void)loadView
{
    UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self addChildViewController:_contentController];
    [contentView addSubview:_contentController.view];
    [_contentController didMoveToParentViewController:self];
    [contentView addSubview:_bannerView];
    self.view = contentView;
}

#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_6_0
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return [_contentController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}
#endif

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [_contentController preferredInterfaceOrientationForPresentation];
}

- (NSUInteger)supportedInterfaceOrientations
{
    return [_contentController supportedInterfaceOrientations];
}

// For animation
- (void)viewDidLayoutSubviews
{
    CGRect contentFrame = self.view.bounds;
    CGRect bannerFrame = CGRectZero;
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_6_0
    bannerFrame = _bannerView.frame;
#else
    bannerFrame.size = [_bannerView sizeThatFits:contentFrame.size];
#endif

    bannerFrame.origin.x = (contentFrame.size.width - bannerFrame.size.width) / 2;

    if (_bannerLoaded) {
        //contentFrame.size.height -= bannerFrame.size.height;
        bannerFrame.origin.y = contentFrame.size.height - bannerFrame.size.height;
    } else {
        bannerFrame.origin.y = contentFrame.size.height;
    }

    _contentController.view.frame = contentFrame;
    _bannerView.frame = bannerFrame;
}

- (void)viewDidLoad {
    [super viewDidLoad];

    _bannerView.rootViewController = self;
    [self.view addSubview:_bannerView];

    GADRequest *request = [GADRequest request];
    [_bannerView loadRequest:request];
}

- (void)adViewDidReceiveAd:(GADBannerView *)bannerView
{
    NSLog(@"adViewDidReceiveAd");
    _bannerLoaded = YES;
    [UIView animateWithDuration:0.25 animations:^{
        [self.view setNeedsLayout];
        [self.view layoutIfNeeded];
    }];
}

- (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error
{
    NSLog(@"adView didFailToReceiveAdWithError");
    _bannerLoaded = NO;
    [UIView animateWithDuration:0.25 animations:^{
        [self.view setNeedsLayout];
        [self.view layoutIfNeeded];
    }];
}

- (void) hideBanner{
    [_bannerView removeFromSuperview];
}

- (void) showBanner{
    [self.view addSubview:_bannerView];

    GADRequest *request = [GADRequest request];
    [_bannerView loadRequest:request];

    NSLog(@"Show Bannerr");
}

- (void)dealloc {
    _bannerView.delegate = nil;
    [_bannerView release];
    [super dealloc];
}

@end

В AppController

_bannerViewController = [[BannerViewController alloc] initWithContentViewController: _viewController];

ошибка

2014-11-24 15:00:44.329 demococos2d iOS[4205:138334] <Google> Category methods are not loaded. Make sure you link the Google Mobile Ads library using one of the -ObjC, -force_load, or -all_load linker flags. See https://developers.google.com/mobile-ads-sdk/docs/#ios for more information.
2014-11-24 15:00:44.856 demococos2d iOS[4205:138334] +[NSDecimalNumber gad_negativeOne]: unrecognized selector sent to class 0x1074e9618
2014-11-24 15:00:44.864 demococos2d iOS[4205:138334] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSDecimalNumber gad_negativeOne]: unrecognized selector sent to class 0x1074e9618'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001086e53f5 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x000000010804dbb7 objc_exception_throw + 45
    2   CoreFoundation                      0x00000001086ec40d +[NSObject(NSObject) doesNotRecognizeSelector:] + 205
    3   CoreFoundation                      0x00000001086447fc ___forwarding___ + 988
    4   CoreFoundation                      0x0000000108644398 _CF_forwarding_prep_0 + 120
    5   demococos2d iOS                     0x0000000104c529b8 -[GADStatisticDictionary decrementNumberForKey:shouldNotifyDelegate:] + 58
    6   demococos2d iOS                     0x0000000104c49a33 -[GADApplication init] + 461
    7   demococos2d iOS                     0x0000000104c4982f __35+[GADApplication sharedApplication]_block_invoke + 38
    8   libdispatch.dylib                   0x00000001099c77f4 _dispatch_client_callout + 8
    9   libdispatch.dylib                   0x00000001099b436d dispatch_once_f + 565
    10  demococos2d iOS                     0x0000000104c49807 +[GADApplication sharedApplication] + 102
    11  demococos2d iOS                     0x0000000104c45b0c +[GADSlot initialize] + 64
    12  libobjc.A.dylib                     0x000000010804e4d6 _class_initialize + 648
    13  libobjc.A.dylib                     0x00000001080576e1 lookUpImpOrForward + 351
    14  libobjc.A.dylib                     0x00000001080640d3 objc_msgSend + 211
    15  demococos2d iOS                     0x0000000104c43ca8 -[GADBannerView commonInitWithAdSize:] + 40
    16  demococos2d iOS                     0x0000000104c43eda -[GADBannerView initWithFrame:adSize:] + 177
    17  demococos2d iOS                     0x0000000104c440cb -[GADBannerView initWithAdSize:] + 142
    18  demococos2d iOS                     0x000000010474fec4 -[BannerViewController initWithContentViewController:] + 164
    19  demococos2d iOS                     0x0000000104750cc5 -[AppController application:didFinishLaunchingWithOptions:] + 757
    20  UIKit                               0x00000001057715a5 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 234
    21  UIKit                               0x00000001057720ec -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2463
    22  UIKit                               0x0000000105774e5c -[UIApplication _runWithMainScene:transitionContext:completion:] + 1350
    23  UIKit                               0x0000000105773d22 -[UIApplication workspaceDidEndTransaction:] + 179
    24  FrontBoardServices                  0x000000010b15d2a3 __31-[FBSSerialQueue performAsync:]_block_invoke + 16
    25  CoreFoundation                      0x000000010861aabc __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    26  CoreFoundation                      0x0000000108610805 __CFRunLoopDoBlocks + 341
    27  CoreFoundation                      0x00000001086105c5 __CFRunLoopRun + 2389
    28  CoreFoundation                      0x000000010860fa06 CFRunLoopRunSpecific + 470
    29  UIKit                               0x0000000105773799 -[UIApplication _run] + 413
    30  UIKit                               0x0000000105776550 UIApplicationMain + 1282
    31  demococos2d iOS                     0x000000010475149f main + 111
    32  libdyld.dylib                       0x00000001099fc145 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

Я также добавил -ObjC в Другой флаг компоновщика

2 ответа

Решение

Опция компоновщика -ObjCне -objc, Дело важно.

РЕДАКТИРОВАТЬ: У вас также есть настройки на неправильном уровне (см. На левой стороне для параметров в настоящее время в силе).

Надеюсь, я не опоздал на вечеринку. Можете ли вы включить точку прерывания исключения и посмотреть, какую линию она прерывает. Было бы легче пойти оттуда. Надеюсь, вы также добавили все необходимые фреймворки, необходимые для запуска admob. Если нет, пожалуйста, проверьте эти рамки.

AdSupport AudioToolbox AVFoundation CoreGraphics CoreMedia CoreTelephony EventKit EventKitUI MessageUI StoreKit SystemConfiguration

Для получения дополнительной информации. Иди сюда. https://developers.google.com/admob/ios/quick-start

Другие вопросы по тегам