iAd和admob混用

来源:互联网 发布:贺伟解说 知乎 编辑:程序博客网 时间:2024/05/16 11:05

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:kGADAdSizeBannerorigin: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 *)bannerwillLeaveApplication:(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 *)bannerdidFailToReceiveAdWithError:(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 *)viewdidFailToReceiveAdWithError:(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
原创粉丝点击