AdWhirl是一个为iPhone应用程序开发人员服务的、在应用程序中内嵌广告的手机广告服务商,目标是提供最好的iPhone广告解决方案。通过AdWhirl,程序开发人员可以自由转换各个广告平台(包括Admob、Videoegg、Mobclix等广告服务平台),并且可以自动为你选择和转换到CPM值最高的手机广告平台,让自己的收益最大化。 Adwhirl本身提供了一个示例程序,但对于cocos2d项目,找了很多资料,都没有完整的介绍,现把自己的摸索给大家来分享一下,欢迎批评指正。 [ post] adwhirl网站上的设定,很简单,直接上adwhirl中设置即可,adwhirl可以看作是一个容器,可以选择多个广告商。 1、在adwhirl SDK中adwhirl目录拖入项目,拖入时选择复制文件到本地。 2、把TouchJSON拖入到项目中,此步可以省略,因为在cocos2d中已经包含此项目,如果拖入,将会出现重复定义错误。 3、增加framework,选择性地添加,不能按adwhirl sdk readme中全部添加,会出现编译错误,添加的framework有: CFNetwork, AVFoundation, CoreLocation, MediaPlayer, SystemConfiguration, MessageUI 4、添加广告商SDK。 如AdMob,Google AdSense等,直接把SDK拖入到项目即可,为使结构明了,可以在项目中建立一个组,如:AdNetworkLibs,把SDK放到此节点下。拖入时,需要复制到本地目录。 5、取消AdWhirl\adapters下不用的项,每个广告商有一个.h文件和一个.m文件,点击进入adapters后,在不使用的广告商的.m文件后,取消打勾。 6、实现AdWhirlDelegate的两个必须的协议:adWhirlApplicationKey和viewControllerForPresentingModalView,这两个必须要实现,adWhirlApplicationKey返回的是你在adwhirl上的id,viewControllerForPresentingModalView返回一个UIViewController,用于显示广告,在cocos2d中,由于没有明显的viewcontroller,与readme中不同,不能使用readme中的方法。 这两个方法在同一场景(scene)中实现,如在HelloWorld中实现。 修改HelloWorldScene.h a.添加: #import "AdWhirlView.h" #import "AdWhirlDelegateProtocol.h" @class AdWhirlView; b.指定此类实现AdWhirlDelegate的协议 @interface HelloWorld : CCLayer <AdWhirlDelegate> c.在类中添加变量 AdWhirlView *awView; UIViewController *viewController; d.设定类型 @property (nonatomic,retain) AdWhirlView *awView; 修改HelloWorldScene.m a.同步对象 @synthesize awView; b.增加如下代码 复制代码 - (void) onEnter { viewController = [[UIViewController alloc] init]; //设置viewController,用于显示广告,如果这个设置错误,则广告不能正常显示,也不能打开窗口显示广告。 viewController.view = [[CCDirector sharedDirector] openGLView]; awView = [AdWhirlView requestAdWhirlViewWithDelegate:self]; CGAffineTransform cgCTM = CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(-270)); cgCTM = CGAffineTransformTranslate(cgCTM,0,0); [awView setTransform:cgCTM]; //由于设备是横向,需要旋转一定角度。 awView.hidden=YES; //开始时隐藏,以免影响主界面上的鼠标响应 awView.center=ccp(0,0); [viewController.view addSubview:awView]; [super onEnter]; } - (NSString *) adWhirlApplicationKey { return @"cc8c386cdc184d468201d16792686774"; //返回你在adwhirl上的key } - (void)adWhirlDidReceiveAd:(AdWhirlView *)adWhirlView { if (YES == awView.hidden) { awView.hidden=NO; } [self adjustAdSize]; } - (void)adjustAdSize { [UIView beginAnimations:@"AdResize" context:nil]; [UIView setAnimationDuration:0.7]; CGSize adSize = [awView actualAdSize]; CGRect newFrame = awView.frame; newFrame.size.height = adSize.width; //由于旋转了90度,需要调换高度和宽度 newFrame.size.width = adSize.height; newFrame.origin = ccp(0,80);//这个坐标是正立时的坐标,以左上角为(0,0) awView.frame = newFrame; [UIView commitAnimations]; } - (BOOL)adWhirlTestMode { return NO; } 这个是游戏中加入广告的代码。只是参考 |
|