Uiview AdMob GadbanerView在不应发布和接收广告请求时不发布和接收广告请求';T
这是我的问题。 另外,请不要因为我知道AdWhirl,而选择不使用它,因为我更喜欢控制我的广告发生了什么 基本上我有iAds和AdMob。我总是从IAD开始,如果广告没有什么可显示的,我初始化AdMob并开始显示它。然后,当iAds最终得到一些东西显示时,我隐藏Admob广告并破坏视图,再次显示iAds 这似乎适用于1次迭代,即:Uiview AdMob GadbanerView在不应发布和接收广告请求时不发布和接收广告请求';T,uiview,admob,Uiview,Admob,这是我的问题。 另外,请不要因为我知道AdWhirl,而选择不使用它,因为我更喜欢控制我的广告发生了什么 基本上我有iAds和AdMob。我总是从IAD开始,如果广告没有什么可显示的,我初始化AdMob并开始显示它。然后,当iAds最终得到一些东西显示时,我隐藏Admob广告并破坏视图,再次显示iAds 这似乎适用于1次迭代,即: 初始化iAds IAD没有内容可展示 隐藏iAds 初始化Admob Admob显示广告 IAD已经收到内容,所以我们应该显示它 隐藏Admob 释放Admob视图
- (GADBannerView*) requestNewAdmobView
{
NSLog(@"AMOB :: requestNewAdmobView");
CGRect adFrame = CGRectZero;
NSString * appID = nil;
adMobAd = nil;
if(DEVICE_IPAD)
{
adFrame.size = GAD_SIZE_728x90;
appID = @"id1";
}
else
{
adFrame.size = GAD_SIZE_320x50;
appID = @"id2";
}
GADBannerView * tmp = nil;
tmp = [[GADBannerView alloc] initWithFrame:adFrame];
if(tmp != nil)
{
NSLog(@"AMOB :: adMobAD != nil , commencing with other stuff!");
tmp.adUnitID = appID;
tmp.rootViewController = gD.viewController;
tmp.delegate = self;
[tmp loadRequest:[GADRequest request]];
[tmp setHidden:NO];
}
else
{
NSLog(@"AMOB :: adMobAD == nil , THIS IS BAD..");
}
return tmp;
}
-(void) reinitializeAdmob
{
NSLog(@"AMOB :: reinitializeAdmob");
if(theViewController != nil)
{
[self shutdownAdmob];
adMobAd = nil;
adMobAd = [self requestNewAdmobView];
if(adMobAd!=nil)
{
[theViewController.view addSubview:adMobAd];
}
}
}
以下是[self reinitializeAdmob]函数:
- (GADBannerView*) requestNewAdmobView
{
NSLog(@"AMOB :: requestNewAdmobView");
CGRect adFrame = CGRectZero;
NSString * appID = nil;
adMobAd = nil;
if(DEVICE_IPAD)
{
adFrame.size = GAD_SIZE_728x90;
appID = @"id1";
}
else
{
adFrame.size = GAD_SIZE_320x50;
appID = @"id2";
}
GADBannerView * tmp = nil;
tmp = [[GADBannerView alloc] initWithFrame:adFrame];
if(tmp != nil)
{
NSLog(@"AMOB :: adMobAD != nil , commencing with other stuff!");
tmp.adUnitID = appID;
tmp.rootViewController = gD.viewController;
tmp.delegate = self;
[tmp loadRequest:[GADRequest request]];
[tmp setHidden:NO];
}
else
{
NSLog(@"AMOB :: adMobAD == nil , THIS IS BAD..");
}
return tmp;
}
-(void) reinitializeAdmob
{
NSLog(@"AMOB :: reinitializeAdmob");
if(theViewController != nil)
{
[self shutdownAdmob];
adMobAd = nil;
adMobAd = [self requestNewAdmobView];
if(adMobAd!=nil)
{
[theViewController.view addSubview:adMobAd];
}
}
}
最后是[自动关闭AdMob]
-(void) shutdownAdmob
{
NSLog(@"AMOB :: shutdownAdmob");
if(adMobAd!=nil)
{
NSLog(@"AMOB :: adMobAd != nil, removing from superview and nilling...");
adMobAd.delegate = nil;
[adMobAd removeFromSuperview];
//[adMobAd release];
adMobAd = nil;
}
else
{
NSLog(@"AMOB :: adMobAd == nil");
}
}
现在据我所知,我正在正确地清理名为AdMobView的GadbanerView,因为:
为什么admobview在第一次正确卸下,但在第二次时却没有正确卸下?您必须在shutdownAdMob中释放adMobAd。 removeFromSuperview会减少adMobAd的引用计数,但
计数随着addSubView的增加而增加,因此您必须释放它。我也遇到了同样的问题。我通过选择这张支票解决了这个问题