[IOS开发] Cocos2d-x2.2使用Admob插屏广告教程(一)

?1、版别

Cocos2d-x 2.2  
  GoogleAdMobAdsSdkiOS-6.5.1

2、导入

2.1导入头文件和.a文件

并在Librabry Search Paths中添加.a文件的路径 
2.2导入所需iOS构造

AdSupport.framework 
   StoreKit.framework 
   AudioToolbox.framework 
   MediaPlayer.framework 
   MessageUI.framework 
   SystemConfiguration.framework

2.3Linking中添加Other Linker Flags

否则会遇到-[GADObjectPrivate  changeState:]: unrecognized selector sent to instance的疑问 
3、编码完结

自个直接在AppController中参加代码,建议从头封装一个object-c的类,但是完结方法是一样的。
首先要导入GADInterstitila.h头文件,完结GADInterstitialDelegate托付,并定义一个GADInterstitila特色。showInterstitial方法供外部调用用来闪现广告。

  1. #import
  2. #import "GADInterstitial.h"
  3. @class RootViewController;
  4. @interface AppController : NSObject  {        UIWindow *window;        RootViewController        *viewController;        GADInterstitial *interstitial_;
  5. }
  6. @property(nonatomic, retain) GADInterstitial *interstitial;
  7. - (void)showInterstitial;
  8. @end

拷贝代码

.m文件中主要是delegate函数的完结,interstitial初始化,广告预先请求和广告闪现等方法

  1. #pragma mark -
  2. #pragma Interstitial Delegate
  3. - (void)interstitial:(GADInterstitial *)interstitial
  4. didFailToReceiveAdWithError:(GADRequestError *)error {
  5. }
  6. - (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial {
  7. }
  8. - (void)interstitialDidDismissScreen:(GADInterstitial *)ad
  9. {        [self preloadRequest];
  10. }
  11. - (void)showInterstitial{        if (self.interstitial.isReady) {        CCLOG("ready");        [self.interstitial presentFromRootViewController:viewController];        } else { CCLOG("not ready"); [self preloadRequest]; }
  12. }
  13. #pragma mark GADRequest generation
  14. -(void)initInterstitial
  15. {        // Create a new GADInterstitial each time. A GADInterstitial        // will only show one request in its lifetime. The property will release the        // old one and set the new one.        self.interstitial = [[[GADInterstitial alloc] init] autorelease];        self.interstitial.delegate = self;        // Note: Edit InterstitialExampleAppDelegate.m to update        // INTERSTITIAL_AD_UNIT_ID with your interstitial ad unit id.        self.interstitial.adUnitID = INTERSTITIAL_AD_UNIT_ID;
  16. }
  17. -(void)preloadRequest
  18. {        CCLOG("pre load"); [self initInterstitial]; [self.interstitial loadRequest: [self createRequest]];
  19. }
  20. // Here we‘re creating a simple GADRequest and whitelisting the application
  21. // for test ads. You should request test ads during development to avoid
  22. // generating invalid impressions and clicks.
  23. - (GADRequest *)createRequest {        GADRequest *request = [GADRequest request];        // Make the request for a test ad. Put in an identifier for the simulator as        // well as any devices you want to receive test ads.        request.testDevices =        [NSArray arrayWithObjects: // TODO: Add your device/simulator test identifiers here. They are // printed to the console when the app is launched. nil];        return request;
  24. }

拷贝代码

跟android不一样的是,interstitial目标每次request时都必须从头初始化。 
完好的.m文件:

  1. #import "AppController.h"
  2. #import "EAGLView.h"
  3. #import "cocos2d.h"
  4. #import "AppDelegate.h"
  5. #import "RootViewController.h"
  6. #define INTERSTITIAL_AD_UNIT_ID @"YOUR_OWN_ID"
  7. @implementation AppController
  8. @synthesize interstitial = interstitial_;
  9. #pragma mark -
  10. #pragma mark Application lifecycle
  11. // cocos2d application instance
  12. static AppDelegate s_sharedApplication;
  13. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {        // Override point for customization after application launch.        // Add the view controller‘s view to the window and display.        window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];        // Init the EAGLView        EAGLView *__glView = [EAGLView viewWithFrame: [window bounds] pixelFormat: kEAGLColorFormatRGB565 depthFormat: GL_DEPTH24_STENCIL8_OES preserveBackbuffer: NO sharegroup: nil multiSampling: NO numberOfSamples: 0];        // Use RootViewController manage EAGLView        viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];        viewController.wantsFullScreenLayout = YES;        viewController.view = __glView;        // Set RootViewController to window        if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)        {        // warning: addSubView doesn‘t work on iOS6        [window addSubview: viewController.view];        }        else        {        // use this method on ios6        [window setRootViewController:viewController];        }        [window makeKeyAndVisible];        [[UIApplication sharedApplication] setStatusBarHidden:true];
  14. //        [self initInterstitial];//每次request都要从头初始化        [self preloadRequest];        cocos2d::CCApplication::sharedApplication()->run();        return YES;
  15. }
  16. - (void)applicationWillResignActive:(UIApplication *)application {        /* Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. */        cocos2d::CCDirector::sharedDirector()->pause();
  17. }
  18. - (void)applicationDidBecomeActive:(UIApplication *)application {        /* Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. */        cocos2d::CCDirector::sharedDirector()->resume();
  19. }
  20. - (void)applicationDidEnterBackground:(UIApplication *)application {        /* Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. If your application supports background execution, called instead of applicationWillTerminate: when the user quits. */        cocos2d::CCApplication::sharedApplication()->applicationDidEnterBackground();
  21. }
  22. - (void)applicationWillEnterForeground:(UIApplication *)application {        /* Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. */        cocos2d::CCApplication::sharedApplication()->applicationWillEnterForeground();
  23. }
  24. - (void)applicationWillTerminate:(UIApplication *)application {        /* Called when the application is about to terminate. See also applicationDidEnterBackground:. */
  25. }
  26. #pragma mark -
  27. #pragma mark Memory management
  28. - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {        /* Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. */
  29. }
  30. - (void)dealloc {        interstitial_.delegate = nil;        [interstitial_ release];        [window release];        [super dealloc];
  31. }
  32. #pragma mark -
  33. #pragma Interstitial Delegate
  34. - (void)interstitial:(GADInterstitial *)interstitial
  35. didFailToReceiveAdWithError:(GADRequestError *)error {
  36. }
  37. - (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial {
  38. }
  39. - (void)interstitialDidDismissScreen:(GADInterstitial *)ad
  40. {        [self preloadRequest];
  41. }
  42. - (void)showInterstitial{        if (self.interstitial.isReady) {        CCLOG("ready");        [self.interstitial presentFromRootViewController:viewController];        } else { CCLOG("not ready"); [self preloadRequest]; }
  43. }
  44. #pragma mark GADRequest generation
  45. -(void)initInterstitial
  46. {        // Create a new GADInterstitial each time. A GADInterstitial        // will only show one request in its lifetime. The property will release the        // old one and set the new one.        self.interstitial = [[[GADInterstitial alloc] init] autorelease];        self.interstitial.delegate = self;        // Note: Edit InterstitialExampleAppDelegate.m to update        // INTERSTITIAL_AD_UNIT_ID with your interstitial ad unit id.        self.interstitial.adUnitID = INTERSTITIAL_AD_UNIT_ID;
  47. }
  48. -(void)preloadRequest
  49. {        CCLOG("pre load"); [self initInterstitial]; [self.interstitial loadRequest: [self createRequest]];
  50. }
  51. // Here we‘re creating a simple GADRequest and whitelisting the application
  52. // for test ads. You should request test ads during development to avoid
  53. // generating invalid impressions and clicks.
  54. - (GADRequest *)createRequest {        GADRequest *request = [GADRequest request];        // Make the request for a test ad. Put in an identifier for the simulator as        // well as any devices you want to receive test ads.        request.testDevices =        [NSArray arrayWithObjects: // TODO: Add your device/simulator test identifiers here. They are // printed to the console when the app is launched. nil];        return request;
  55. }
  56. @end

拷贝代码

4、调用

  1. #elif(CC_TARGET_PLATFORM == CC_PLATFORM_IOS) [(AppController*)[UIApplication sharedApplication].delegate showInterstitial];
  2. #endif引荐网站 http://www.keymob.com/
时间: 2024-10-11 22:49:44

[IOS开发] Cocos2d-x2.2使用Admob插屏广告教程(一)的相关文章

[IOS开发] Cocos2d-x2.2使用Admob插屏广告教程(一):iOS篇

?1.版别 Cocos2d-x 2.2    GoogleAdMobAdsSdkiOS-6.5.1 2.导入 2.1导入头文件和.a文件 并在Librabry Search Paths中添加.a文件的路径 2.2导入所需iOS构造 AdSupport.framework    StoreKit.framework    AudioToolbox.framework    MediaPlayer.framework    MessageUI.framework    SystemConfigura

iOS开发证书及推送证书的生成教程

以下是我自己摸索出来的证书生成过程,如有错误欢迎指正~ 一.生成开发证书 这里的证书包括开发(development)证书和生产(production)证书. 1.打开钥匙串访问-->证书助理-->从证书颁发机构请求证书,输入邮箱和常用名,常用名将作为你的密钥名,选择保存到磁盘,名字默认就可以,存到桌面. 2.登录苹果的开发者中心,登录自己的开发者账号进入,选择证书. 单击这里的Development,(注意,这里最多同时存在2个证书)点击右上角的加号,选择iOS App Developmen

iOS开发-植入广告(iAd, Admob实例)

应用中植入广告是一种很好的盈利手段. 下面介绍主流的两种方法.iAd, Admob 先mark一个很详细的pdf.   http://pan.baidu.com/share/link?shareid=1656439633&uk=1394536315&fid=406566606116897 一.iAd 1.需要加入iAd.framework 2.   .h文件加入如下代码 #import <UIKit/UIKit.h> #import <iAd/iAd.h> @int

【iOS开发】在 App 中加入 AdMob 广告 - 入门介绍与编程技巧

前言 虽然在App中加入广告来盈利是比较低级的商业化方式,但对于个人开发者或者小团队开发者来说,做出一个简单易用的免费小工具(举个栗子),在里面加入一些广告,如果用的人多,也是可以带来一些可观的收入的.用户没有掏钱,得到了方便,开发者也得到了回报:) 我个人出于对金钱的考虑和对Google的信任,选择了AdMob这个平台来在App中投放广告(https://apps.admob.com 访问需要搭梯子,梯子为SS的用户最好全局代理,自动代理的话访问起来会很卡). 就目前来看,我果还是不太擅长移动

iOS开发 QQ粘性动画效果

QQ(iOS)客户端的粘性动画效果 时间 2016-02-17 16:50:00  博客园精华区 原文  http://www.cnblogs.com/ziyi--caolu/p/5195615.html 主题 iOS开发 qq的app中要是有新的联系人发消息过来,相应联系人的cell右边会有一个红色的圆圈表示消息条数.如果去触碰那个圆圈,可以发现它竟然会跟着手指的移动而移动. 在一定范围内,手指离开屏幕,会发现红色圆圈会自动弹性的回到原来的位置.而如果超出一定距离,这个圆圈会做一个销毁的动画,

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 2015-04-05 15:25 2482人阅读 评论(1) 收藏 举报开源框架 图像: 1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.      下载:https://github.com/mwaterfall/MWPhotoBrowser目前比较活跃的社区仍旧是Github,

一些常用的IOS开发网站

开发教程: 即便过了入门阶段,还是要经常看看一些不错的实例教程.1.http://mobile.tutsplus.com/category/tutorials/iphone/ 比较新的一个网站,以前没注意到.其中有一篇文章着重推荐,学习iOS游戏开发可以参考的10个实例(源代码都在github上):http://mobile.tutsplus.com/tutorials/iphone/learn-ios-game-development-by-example-10-projects-to-get

IOS开发第三方开源库

IOSios开发第三方开源库 1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是GitHub上第三大Objective-C库.它建立在NSURLConnection.NSOperation等类库的基础上,让很多网络通信功能的实现变得十分简单,因此,许多iOS应用开发都会使用到它. 支持HTTP请求和基于REST的网络服务(包括GET.POST.PUT

iOS开发入门教程_iOS开发视频教程

iOS开发入门教程 (Object-C.网络编程.多线程.蓝牙.二维码.Cocos2D.OpenGL)适合人群:初级课时数量:34课时用到技术:IOS,Object-C,OpenGL,XCode,Cocos 2D涉及项目:Cocos+2D.Game Kit蓝牙数据处理等咨询QQ:1840215592 iOS开发入门教程详细查看:http://www.ibeifeng.com/goods-471.html1.1.课程目标iOS开发入门教程内容的目标是初学者入门,让入门者提高,让所有人符合企业招聘的