как реализовать AdBannerview и ADBannerview делегат - PullRequest
6 голосов
/ 27 февраля 2011

У меня проблемы с реализацией ADBannerView и его протокола делегата.

Я реализовал следующий код в своем классе представления (также сделал представление соответствующим протоколу ADBannerViewDelegate):

//add iAds
ADBannerView *adView = [[ADBannerView alloc] initWithFrame: CGRectMake(0, 318, 320, 50)];
adView.requiredContentSizeIdentifiers = [NSSet setWithObjects: ADBannerContentSizeIdentifierPortrait, ADBannerContentSizeIdentifierLandscape, nil];
adView.delegate = self; 
//adView.delegate = ADBannerViewDelegate;
[self.view addSubview: adView];

, затем я создал класс для ADBannerViewDelegate со следующим .m

//
//  ADBannerViewDelegate.m
//

#import "ADBannerViewDelegate.h"

@implementation ADBannerViewDelegate

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
    NSLog(@"bannerview did not receive any banner due to %@", error);}

- (void)bannerViewActionDidFinish:(ADBannerView *)banner{NSLog(@"bannerview was selected");}

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave{return willLeave;}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner {NSLog(@"banner was loaded");}

@end

баннеры в конечном итоге представляются, но консоль продолжает выдавать следующие типы ошибок:

2011-02-27 15:00:54.108 app[31639:207] ADBannerView: Unhandled error (no delegate or delegate does not implement didFailToReceiveAdWithError:): Error Domain=ADErrorDomain Code=5 "The operation couldn’t be completed. Banner view is visible but does not have content" UserInfo=0x6356a40 {ADInternalErrorCode=5, NSLocalizedFailureReason=Banner view is visible but does not have content}

и функции делегата ничего не делают, поэтому вообще никакого NSLog нет.Очевидно, не ловить ошибки.

Я в тупике.Я предполагаю, что что-то упущено в связи вызовов представления Adbanner в представлении и делегате.Не уверен, как это сделать или что не так.

Любая помощь?Заранее спасибо.

Джейсон

Ответы [ 5 ]

9 голосов
/ 27 февраля 2011

Причина, по которой вы сообщили AdBannerView , что вы являетесь его делегатом, но никогда не помещаете его в свой файл реализации.Ваш файл реализации должен выглядеть следующим образом (обратите внимание на строку с @implmentation):

//
//  ADBannerViewDelegate.m
//

#import "ADBannerViewDelegate.h"

@implementation ADBannerViewDelegate<ADBannerViewDelegate>

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
    NSLog(@"bannerview did not receive any banner due to %@", error);}

- (void)bannerViewActionDidFinish:(ADBannerView *)banner{NSLog(@"bannerview was selected");}

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave{return willLeave;}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner {NSLog(@"banner was loaded");}

@end

А также вы не должны называть свой класс ADBannerViewDelegate .Ваш класс должен быть делегатом (отвечать на него) на ADBannerView , но не иметь его имени.

4 голосов
/ 27 февраля 2011

я успешно интегрировал iAds в свое приложение, используя этот учебник:
http://www.raywenderlich.com/1371/how-to-integrate-iad-into-your-iphone-app
может вам тоже помочь.

2 голосов
/ 27 февраля 2011

Вы не пытаетесь реализовать класс с именем ADBannerViewDelegate, вы помещаете эти методы в реализацию для своего класса представления.

(Если вы фактически назвали свой класс представления "ADBannerViewDelegate", не надо. Это сбивает с толку.)

1 голос
/ 17 мая 2014

Вы можете использовать эту ссылку, это очень полезно

http://codewithchris.com/iad-tutorial/

1 голос
/ 11 июля 2012

Для меня это была цель и устройство, я запустил его на симуляторе 4.3 и своем ipad 2, но приложение было для iphone 5.1, когда я сменил цель, все прошло гладко

...