iAd和admob混用,在收不到iAd广告的时候用admob,一旦收到iAd广告就把admob关闭。这样可以实现在不支持iAd的国家里,开启admob。并不需要判断国家。
判断方法有三点主要事项:
1,同时请求iAd和admob
2,如果收到iAd广告就把admob关了
3,收到admob广告5次了,说明到目前未知还是没有收到iAd,这样说明你收不到iAd广告就可以关闭iAd了
头文件:
#import #import "iAd/ADBannerView.h" #import "GADBannerViewDelegate.h" #import "GADRequest.h" @interface IADHelper : UIViewController{ ADBannerView *adView; GADBannerView *adBanner; bool bShowIAD; bool bValidIAD; int receiveAdmob; } @property (retain) UIViewController *presentingViewController; + (IADHelper *)sharedInstance; - (GADRequest *)createRequest; - (void) hideBannerView; - (void) unhideBannerView; - (void) receiveADmob; @end
实现文件:
#import "IADHelper.h" #import "admobHelper.h" #import "admobHelper.h" #import "GADBannerView.h" #import "GADRequest.h" @implementation IADHelper @synthesize presentingViewController; static IADHelper *iADHelper = nil; + (IADHelper *) sharedInstance { if (!iADHelper) { iADHelper = [[IADHelper alloc] init]; } return iADHelper; } - (void)createAdBannerView { bValidIAD = false; receiveAdmob = 0; //同时创建iAd和admob,它们都去请求广告 Class classAdBannerView = NSClassFromString(@"ADBannerView"); if (classAdBannerView != nil) { adView = [[classAdBannerView alloc] init]; [adView setFrame:CGRectMake(0, 0, 320, 50)]; [adView setDelegate:self]; adView.hidden = TRUE; bShowIAD = true; //UIView* testV = al_iphone_get_view(); 添加到自己的父view里 [testV addSubview:adView]; } CGPoint origin = CGPointMake(0.0, 0.0); // Use predefined GADAdSize constants to define the GADBannerView. adBanner = [[[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner origin:origin] autorelease]; adBanner.adUnitID = @"a150062b54b1808"; [adBanner setDelegate:self]; [adBanner setRootViewController:self]; [self.view addSubview:adBanner]; //UIView* testV = al_iphone_get_view(); 添加到自己的父view里 [testV addSubview:adBanner]; [adBanner loadRequest:[self createRequest]]; } - (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave { return YES; } - (void)bannerViewDidLoadAd:(ADBannerView *)banner { if (!bShowIAD) return; NSLog(@"%d",adView.bannerLoaded); adView.hidden = NO; NSLog(@"did load"); [adView.superview bringSubviewToFront:adView]; //收到iAd广告,就把admob广告窗口关了 if (adBanner != nil) { adBanner.delegate = nil; [adBanner removeFromSuperview]; adBanner = nil; } } - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error { adView.hidden = YES; } - (GADRequest *)createRequest { GADRequest *request = [GADRequest request]; return request; } #pragma mark GADBannerViewDelegate impl // We've received an ad successfully. - (void)adViewDidReceiveAd:(GADBannerView *)adView { NSLog(@"Received ad successfully"); [adBanner.superview bringSubviewToFront:adBanner]; [self receiveADmob]; } - (void) receiveADmob { //收到admob广告5次了,说明到目前未知还是没有收到iAd, 这样说明你收不到iAd广告就可以关闭iAd了 receiveAdmob++; if (receiveAdmob > 5) { [adView setDelegate:nil]; } } - (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error { NSLog(@"Failed to receive ad with error: %@", [error localizedFailureReason]); } - (void) hideBannerView { adView.hidden = YES; if (adBanner != nil) adBanner.hidden = YES; bShowIAD = false; } - (void) unhideBannerView { adView.hidden = NO; if (adBanner != nil) adBanner.hidden = NO; bShowIAD = true; } -(void)dealloc{ [adView removeFromSuperview]; [super dealloc]; } @end