分享AdMob + iAd部署代码

分享AdMob + iAd部署代码   

http://www.cocoachina.com/bbs/read.php?tid-43249-keyword-admob.html

之前我的 AdMob广告显示一直采用IBSupport模式,这两天搞搞In App Purchase(程序内购买),又重新研究和测试了 AdMob代码,终于可以丢掉IBSupport模式,进入全 代码控制了。 论坛内有人建议用AdWhirl实现 AdMob +  iAd,还没有来得急研究,不知道难度大不大。在这里 分享一下我的最终方案,不知道是否还有人需要在这方面努力,同时尚未能够全面测试,不知道还存在哪些 问题,有经验的朋友交流交流一下。 


部署 广告函数,本函数在viewDidLoad()中调用,同时也可以在购买“广告去除”成功后调用: 

- ( void)disposeAds { 
BOOL is_iAdON =  NO; 
BOOL is_adMobON =  NO; 

//分析设备可显示哪一家广告 
if ([[[ UIDevicecurrentDevice ] model ] rangeOfString : @"iPad" ]. location ==  0 ) { 
is_adMobON =  YES; 
if ([[[ UIDevicecurrentDevice ] systemVersion ] floatValue ] >=  4.2f ) { 
//为iPad 4.2之后的系统显示iAd广告 
//如果是北 美国时间或太平洋时间,则假想是美国用户 
//2010.12 英国,法国 
//2011.1  德国 
//2011.?  日本 
if ([[[ NSTimeZonelocalTimeZone ] name ] rangeOfString : @"America/" ]. location ==  0 
    || [[[ NSTimeZonelocalTimeZone ] name ] rangeOfString : @"Pacific/" ]. location ==  0 
    || [[[ NSTimeZonelocalTimeZone ] name ] rangeOfString : @"Europe/" ]. location ==  0 
    || [[[ NSTimeZonelocalTimeZone ] name ] rangeOfString : @"Asia/Tokyo" ]. location ==  0 ) 

is_adMobON =  NO; 



else if ([[[ UIDevicecurrentDevice ] systemVersion ] floatValue ] >=  4.0f ) { 
//如果是北美国时间或太平洋时间,则假想是美国用户 
//2010.12 英国,法国 
//2011.1  德国 
//2011.?  日本 
if ([[[ NSTimeZonelocalTimeZone ] name ] rangeOfString : @"America/" ]. location ==  0 
    || [[[ NSTimeZonelocalTimeZone ] name ] rangeOfString : @"Pacific/" ]. location ==  0 
    || [[[ NSTimeZonelocalTimeZone ] name ] rangeOfString : @"Europe/" ]. location ==  0 
    || [[[ NSTimeZonelocalTimeZone ] name ] rangeOfString : @"Asia/Tokyo" ]. location ==  0 ) 

is_adMobON =  NO; 

else 
is_adMobON =  YES; 

else 
is_adMobON =  YES; 

if(!is_adMobON) 
is_iAdON =  YES; 


//检测购买(这个为程序内购买了“去除广告”功能的把广告清除或是不显示,removeAdPurchased是个变量,本文未讨论) 
if (removeAdPurchased ) { 
is_adMobON =  NO; 
is_iAdON =  NO; 


//打开广告 
if(is_adMobON || is_iAdON) { 
if(is_adMobON) { 
//启用 AdMob 
if(! adMobAd) { 
CGSize sizeToRequest; 
if ([[[ UIDevicecurrentDevice ] model ] rangeOfString : @"iPad" ]. location ==  0 ) 
sizeToRequest = CGSizeMake(748, 110); 
else 
sizeToRequest = CGSizeMake(320, 48); 


adMobAd = [ AdMobView  requestAdOfSize:sizeToRequest  withDelegate: self];  // start a new ad request 
[ adMobAd retain ]; // this will be released when it loads (or fails to load) 


else { 
//启用iAd 
if(! iAdView) { 
iAdView = [[ADBannerView alloc ]  initWithFrame :CGRectZero ]; 
iAdView .requiredContentSizeIdentifiers = [NSSet setWithObject : ADBannerContentSizeIdentifierPortrait ]; 
iAdView .currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait ; 

if ([[[ UIDevicecurrentDevice ] model ] rangeOfString : @"iPad" ]. location ==  0 ) 
iAdView.frame = CGRectMake(0, 1024, 768, 66); 
else 
iAdView.frame = CGRectMake(0, 480, 320, 50); 

iAdView. delegate =  self; 
[ self. view  addSubview: iAdView]; 
iAdView . hidden =  YES ; //暂时不显示广告框,收到广告后再显示出来 



else { 
//关闭广告 
if (adMobAd ) { 
//关闭 AdMob 
[ adMobAdremoveFromSuperview ]; 
[ adMobAd  release]; 
adMobAd =  nil; 

else  if( iAdView) { 
//关闭iAd(bannerIsVisible是个变量,用于标识iAd广告是否已经显示内容,可不用) 
if (bannerIsVisible ) { 
[ UIViewbeginAnimations : @"animateAdBannerOff"context : NULL ]; 
if ([[[ UIDevicecurrentDevice ] model ] rangeOfString : @"iPad" ]. location ==  0 ) 
iAdView. frame =  CGRectOffset( iAdView. frame,  0,  66); 
else 
iAdView. frame =  CGRectOffset( iAdView. frame,  0,  50); 

[ UIViewcommitAnimations ]; 
bannerIsVisible =  NO ; 
iAdView. hidden =  YES; 



[ iAdViewremoveFromSuperview ]; 
[ iAdView  release]; 
iAdView =  nil; 







AdMob广告收到内容后处理函数: 
// Sent when an ad request loaded an ad; this is a good opportunity to attach 
// the ad view to the hierachy. 
- ( void)didReceiveAd:( AdMobView *)adView { 
// get the view frame 
CGRect frame =  self .view .frame ; 

// put the ad at the bottom of the screen 
if ([[[ UIDevicecurrentDevice ] model ] rangeOfString : @"iPad" ]. location ==  0 ) 
adView. frame =  CGRectMake((frame. size. width -  748)/ 2, frame. size. height -  110,  748,  110); 
else 
  adView. frame =  CGRectMake( 0, frame. size. height -  48, frame. size. width,  48); 

[ self . viewaddSubview : adView]; 
[adMobRefreshTimer invalidate ]; 
adMobRefreshTimer =  nil ; 
adMobRefreshTimer = [ NSTimerscheduledTimerWithTimeInterval : AdMob_REFRESH_PERIODtarget : selfselector : @selector ( refreshAdMob :) userInfo : nilrepeats : YES ]; 






iAd广告收到内容后处理函数: 
- ( void)bannerViewDidLoadAd:( ADBannerView *)banner { 
if (!bannerIsVisible ) 
    { 
        [ UIViewbeginAnimations : @"animateAdBannerOn"context : NULL ]; 
if ([[[ UIDevicecurrentDevice ] model ] rangeOfString : @"iPad" ]. location ==  0 ) 
banner. frame =  CGRectOffset(banner. frame,  0, - 66); 
else 
banner. frame =  CGRectOffset(banner. frame,  0, - 50); 

        [ UIViewcommitAnimations ]; 
bannerIsVisible =  YES ; 
banner. hidden =  NO; 
    } 


增加个Demo,解压后,工程文件在Hello Arifly文件夹内,外面的 AdMob和TouchJSON为 AdMob SDK附带的源码,需要引用到。 
 Ads(AdMob+iAd)Demo.zip (1549 K) 下载次数:452 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值