我想在我的应用中添加AdMob横幅! 我让它在UIView控制器中工作,但不是在我的UIView ...横幅显示但是当你点击它时,没有任何反应!如果你点击UIViewcontrollers中的横幅它就可以了!
UIViewcontrollers中的代码(有效!)
- (void)viewDidLoad
{
[super viewDidLoad];
bannerView_ = [[GADBannerView alloc] initWithFrame:CGRectMake(0.0, self.view.frame.size.height - GAD_SIZE_320x50.height-49, GAD_SIZE_320x50.width, GAD_SIZE_320x50.height)];
bannerView_.adUnitID = MY_BANNER_UNIT_ID;
bannerView_.rootViewController = self;
[self.view addSubview:bannerView_];
GADRequest *r = [[GADRequest alloc] init];
r.testing = YES;
[bannerView_ loadRequest:r];
// Do any additional setup after loading the view, typically from a nib.
}
UiView中的代码:(哪些不起作用)
- (void)drawRect:(CGRect)rect
{
// Create a view of the standard size at the bottom of the screen.
bannerView_ = [[GADBannerView alloc] initWithFrame:CGRectMake(0.0, self.frame.size.height - GAD_SIZE_320x50.height, GAD_SIZE_320x50.width, GAD_SIZE_320x50.height)];
// Specify the ad's "unit identifier." This is your AdMob Publisher ID.
bannerView_.adUnitID = MY_BANNER_UNIT_ID;
// Let the runtime know which UIViewController to restore after taking
// the user wherever the ad goes and add it to the view hierarchy.
bannerView_.rootViewController = self;
[self addSubview:bannerView_];
// Initiate a generic request to load it with an ad.
[bannerView_ loadRequest:[GADRequest request]];
// Drawing code
}
行bannerView_.rootViewController = self;给了我一个警告,但没有它就行不通!警告说"不兼容的指针类型分配给' UIViezController *' blandad * const_strong'
blandad,名字是.IV和.h文件,用于UIView!
你认为错在哪里?
/ A菜鸟
答案 0 :(得分:2)
请从- (void)drawRect:(CGRect)rect
方法中删除所有代码,如果要在图形上下文中绘制内容,则必须覆盖此方法。此方法不会被调用多次,因此每次您将分配新视图并将其添加为子视图
如果您想将广告横幅添加到自定义UIView,请执行以下操作:
// in your CustomView implementation
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
bannerView_ = [[GADBannerView alloc] initWithFrame:CGRectMake(0.0, self.view.frame.size.height - GAD_SIZE_320x50.height-49, GAD_SIZE_320x50.width, GAD_SIZE_320x50.height)];
bannerView_.adUnitID = MY_BANNER_UNIT_ID;
UIViewController* root = [(YOUR_APP_DELEGATE_CLASS*)[[UIApplication sharedApplication] delegate] viewController];
bannerView_.rootViewController = root;
[self addSubview:bannerView_];
GADRequest *r = [[GADRequest alloc] init];
r.testing = YES;
[bannerView_ loadRequest:r];
}
return self;
}
您可以使用您拥有的任何控制器设置UIViewController* root
,最好设置一个控制器,该视图是您的自定义视图的父级。我刚从app delegate为root视图控制器编写了一个路径,如果你想使用它,请确保你的app delegate有这个viewController
属性。
答案 1 :(得分:0)
我不知道你是否解决了你的问题,但从我的角度来看,我得到了同样的问题。
将GAD横幅视图添加到从UIView继承的正确视图中,然后横幅显示良好,但Admob链接未激活。
在我的情况下,GAD横幅视图已添加到GADBannerView的adViewDidReceiveAd委托中。显然这不是好方法。
通过在初始化后直接添加GAD横幅视图,现在一切正常。
- (void)initGADBannerViewWithId:(NSString *)bannerId andRootController:(UIViewController *)rootController
{
_gadBannerView = [[GADBannerView alloc] initWithFrame:self.frame];
_gadBannerView.adUnitID = bannerId;
// Let the runtime know which UIViewController to restore after taking
// the user wherever the ad goes and add it to the view hierarchy.
_gadBannerView.rootViewController = rootController;
_gadBannerView.delegate = self;
[self addSubview:_gadBannerView];
}
在GADBannerView的adViewDidReceiveAd委托中,现在我只需要一个动画来修改横幅位置以获得动态视觉效果。
希望这可以帮助某人
答案 2 :(得分:0)
请参考下面的链接,它的一个例子:
答案 3 :(得分:0)
我认为最好的方法是管理单个横幅广告,并将其添加到您需要广告的所有视图中。
试试我写的这门课程 - https://github.com/jackwu95/JWGADManager