我做了以下事情:
1)在iOS项目中添加了iAd.framework。我将iAd / iAd.h和.m导入项目。
2)我打开了AdMob帐户。在调解中,我使iAd cpm高于AdMob cpm。
3)将AdMob SDK iOS 7.0 SDK下载到项目中,它附带AdMob适配器。将GoogleMobileAds导入到项目
中的.h和.m文件中4)将iAd适配器下载到项目中。
5)在其他链接器标志的Build Settings下,我添加了-ObjC,以便它在调试和发布中。
它在Admob Mediation说明中说明"无需编写其他代码来从每个广告网络创建广告视图。 AdMob中介SDK会根据需要调用每个广告网络的适配器和SDK来制作广告"
不添加任何代码,不起作用。
我有一个ViewController可供广告分享。 3个方法就是1个VC。 1st = viewDidLoad方法,2nd = StartGame方法,3rd = GameOver方法。然后回到GameOver之后的viewDidLoad。
所以然后我在viewDidLoad中添加了iad代码,并将iad隐藏在didFailToReceiveAdWithError和AdMob show中。
这使得iAd加载和iAd在失败并加载AdMob之前保持显示测试横幅5分钟。但是,在我离开GameOver页面并返回viewDidLoad后,AdMob立即更改回iAd。
所以我不认为调解工作正常,因为广告横幅不应受任何方法的影响。我做错了什么?如何正确设置调解?
我的代码:
-(void)viewDidLoad{
self.iAD = [[ADBannerView alloc] initWithFrame:CGRectMake(0, 60, 375, 50)];
[self.iAD setDelegate:self];
[self.view addSubview:self.iAD];
}
-(void)bannerViewDidLoadAd:(ADBannerView *)banner{
self.iAD.hidden=NO;
}
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
[self.iAD setAlpha:0];
self.iAD.hidden=YES;
self.bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeSmartBannerPortrait];
self.AdMob.adUnitID = @"my-unit-id";
self.AdMob.rootViewController = self;
self.AdMob.delegate = self;
[self.view addSubview:self.AdMob];
GADRequest *request =[GADRequest request];
request.testDevices = @[ @"278b11d6d1cb3f7d10414d6b2686d0e5 ];
[self.bannerView loadRequest:request];
}
答案 0 :(得分:0)
我不熟悉AdMob的iAd适配器,但它听起来像是显示一个AdMob视图并让AdMob在他们的结束时进行调解是否根据他们可以获得的CPM显示iAd广告或AdMob广告在那时候。您的代码显示您希望单独实施iAd和AdMob,并根据他们是否收到广告来显示其中一个。此外,每次要展示广告时,都不应创建新的iAd和AdMob横幅广告视图。您应该最初创建其中一个并在应用程序中的适当时间显示它们。离开gameOver视图后,您的iAd广告立即显示的原因是因为调用了viewDidLoad,您可以再次创建全新的iAd视图。要完成您在代码中尝试执行的操作,您应该创建一个函数来初始创建广告视图,或者在viewDidLoad中使用条件语句,以确保广告视图只创建一次。我的示例使用条件语句执行此操作,然后在iAd收到广告时在屏幕上或屏幕外移动iAd / AdMob广告视图。
//ViewController.h
#import <iAd/iAd.h>
#import <GoogleMobileAds/GoogleMobileAds.h>
@interface ViewController : UIViewController <ADBannerViewDelegate>
@end
//ViewController.m
#define BANNER_UNIT_ID @"your admob banner id"
@implementation ViewController {
//Ads
GADBannerView *adMobView;
ADBannerView *iAdView;
CGRect screenBounds;
BOOL bannerIsVisible;
BOOL haveCreatedAdViews;
}
- (void)viewDidLoad {
[super viewDidLoad];
if (!haveCreatedAdViews) {
// Get device screen size
screenBounds = [[UIScreen mainScreen] bounds];
// Setup iAd view
iAdView = [[ADBannerView alloc] initWithFrame:CGRectZero];
[self.view addSubview:iAdView];
iAdView.delegate=self;
[iAdView setFrame:CGRectMake(0,
0,
iAdView.bounds.size.width,
iAdView.bounds.size.height)];
iAdView.center = CGPointMake(screenBounds.size.width / 2, screenBounds.size.height + (iAdView.bounds.size.height / 2));
// Setup AdMob view
adMobView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
adMobView.adUnitID = BANNER_UNIT_ID;
adMobView.rootViewController = self;
[self.view addSubview:adMobView];
[adMobView loadRequest:[GADRequest request]];
[adMobView setFrame:CGRectMake(0,
0,
adMobView.bounds.size.width,
adMobView.bounds.size.height)];
adMobView.center = CGPointMake(screenBounds.size.width / 2, screenBounds.size.height + (adMobView.bounds.size.height / 2));
// Start AdMobView on screen
adMobView.frame = CGRectOffset(adMobView.frame, 0, -50);
//iAd banner is not visible
bannerIsVisible = NO;
haveCreatedAdViews = YES;
}
}
//iAd
-(void)bannerViewDidLoadAd:(ADBannerView *)banner {
NSLog(@"iAd received ad");
if (!bannerIsVisible) {
// Move iAd on screen
[UIView beginAnimations:nil context:NULL];
iAdView.frame = CGRectOffset(iAdView.frame, 0, -50);
[UIView commitAnimations];
bannerIsVisible = YES;
// Move AdMob off screen
[UIView beginAnimations:nil context:NULL];
adMobView.frame = CGRectOffset(adMobView.frame, 0, 50);
[UIView commitAnimations];
}
}
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
NSLog(@"iAd failed");
if (bannerIsVisible) {
// Move iAd off screen
[UIView beginAnimations:nil context:NULL];
iAdView.frame = CGRectOffset(iAdView.frame, 0, 50);
[UIView commitAnimations];
bannerIsVisible = NO;
// Move AdMob on screen
[UIView beginAnimations:nil context:NULL];
adMobView.frame = CGRectOffset(adMobView.frame, 0, -50);
[UIView commitAnimations];
}
}
答案 1 :(得分:-1)
我有类似的问题。 我在didFailToReceiveAdWithError中使用它:
[self.bannerView removeFromSuperview];
然后我初始化了我的adMobView ...