Как узнать, когда отображается вид?- Использование Burstly для интеграции рекламы - PullRequest
2 голосов
/ 15 сентября 2010

Я пытаюсь использовать Burstly для показа рекламы iAds и adMob в моем приложении для iPhone. Я следовал за их гидом

http://docs.burstly.com/guides/ad-serving-quick-start-guide.html

Вот фрагмент того, что у меня есть ...

MyViewController.h

@interface MyViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, OAIAdManagerDelegate> {

     OAIAdManager *adManager;
     IBOutlet UIView *mainView;

}

@property (nonatomic, retain) UIView *mainView;

@end

MyViewController.m

#import "MyViewController.h"

@implementation MyViewController

@synthesize mainView;

- (void)viewDidLoad {
        [super viewDidLoad];

        adManager = [[OAIAdManager alloc] initWithDelegate:self];
        [self.view addSubview:adManager.view];
        [adManager requestRefreshAd];
}


- (UIViewController *)viewControllerForModalPresentation {
 return self;
}

- (CGFloat)defaultSessionLife {
 return 35.0f;
}

- (Anchor)anchor {
 return Anchor_Bottom;
}

- (CGPoint)anchorPoint {
 return CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height);
}    

- (NSString *)publisherId {
     return @"ENTER YOUR PUBLISHER ID HERE";
}

- (NSString *)getZone {
     return @"ENTER YOUR ZONE ID HERE";
}

- (UIViewController *)viewControllerForModalPresentation {
     return self;
}

// resize mainView (pull up) when ad is displayed
- (void)adManager:(OAIAdManager*)manager didLoad:(NSString*)aNetwork {

 [UIView beginAnimations:@"AdResize" context:nil]; 
 [UIView setAnimationDuration:0.7]; 
 CGRect mainViewNewFrame = mainView.frame;
 mainViewNewFrame.size.height = 460 - adSize;
 mainViewNewFrame.size.width = 320;
 mainViewNewFrame.origin.x = 0;
 mainViewNewFrame.origin.y = 0;
 mainView.frame = mainViewNewFrame;
 [UIView commitAnimations];
}

// resize MainView when ad is not available
- (void)adManager:(OAIAdManager*)manager failedToLoad:(NSString*)aNetwork {
 [UIView beginAnimations:@"AdResize" context:nil]; 
         [UIView setAnimationDuration:0.7]; 

 CGRect mainViewNewFrame = mainView.frame;
 mainViewNewFrame.size.height = 460;
 mainViewNewFrame.size.width = 320;
 mainViewNewFrame.origin.x = 0;
 mainViewNewFrame.origin.y = 0;
 mainView.frame = mainViewNewFrame;
         [UIView commitAnimations];
}

У меня возникли проблемы с точным определением времени показа объявления, чтобы я мог изменить свое представление. У меня есть вид таблицы, касающийся нижней части экрана, поэтому мне нужно поднять его (изменить размер окна), когда отображается объявление.

Я попытался использовать метод OAIAdManagerDelegateProtocol "adManager: didLoad:", который дает смешанные результаты. Этот метод всегда вызывается, когда рекламодатель считает, что у него есть реклама, но иногда реклама не отображается (особенно при первом вызове iAd). Поэтому я всегда изменяю размер своего основного вида, чтобы освободить место для рекламы при вызове этого метода, но иногда реклама там не отображается, поэтому я получаю пустое пространство размером с объявление.

Я также пытался использовать метод "adManager: didLoadView:", но он никогда не вызывался.

Итак, есть ли другой способ получить уведомление, когда на экране отображается adManager.view, чтобы я мог знать, когда изменить размер моего представления?

1 Ответ

2 голосов
/ 17 сентября 2010

это Алекс с Burstly.На самом деле это была проблема с нашим кодом и iOS 4.1.Мы решили эту проблему, и вы можете найти обновленный SDK на github: http://github.com/burstly/Burstly-iPhone/downloads

...