欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

admob 接入

发布时间:2023/12/16 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 admob 接入 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

android 

接入文档 https://firebase.google.com/docs/admob/android/games

https://developers.google.com/admob/android/banner

android 激励视频接入  

https://support.vungle.com/hc/en-us/articles/207604108

1.接入admob视频系统

2.将vngle适配器和sdk集成到您的android项目中

dagger-2.7.jar

eventbus-2.2.1.jar

javax.inject-1.jar

rxjava-1.2.0.jar

vngle-publisher-adpater.jaar

vngleadpter.aar

下载地址

https://s3.amazonaws.com/vvv-releases/admob/VungleAdMobAndroid-2.2.0.zip

https://v.vungle.com/dashboard/api/1/sdk/android

或者直接去vungle官网下载

更新应用级build.gradle\

dependencies {
  compile fileTree(dir:'libs', include: ['*.jar'])  // Vungle SDK
  compile(name:'VungleAdapter','ext':'aar')  // Vungle Adapter for AdMob
}
repositories {
  jcenter()
  flatDir {
      dirs'libs'
  }
}

,更新xml


3. 进入vungle 后台创建 应用获取appid


4.进入admob 后台,创建。应用。。创建激励广告。

5. 点击中介-》创建中介组-》,点击广告来源选择vungle



输入 vungle 官网申请的appid ,然后保存。就可以了


1、 先去Google官网下载最新的IOS版本的SDK:https://developers.google.com/mobile-ads-sdk/download#downloadios

2、解压下载后的zip包,把包里面的文件全部添加到xcode项目IOS目录下。

3、引入开发框架。点击你具体的项目-->Build Phases标签-->Link Binary With Libraries,然后点击“+”添加以下几个开发框架:

GoogleMobileAds

MediaPlayer.framework

GameController.framework

  • AdSupport
  • AudioToolbox
  • AVFoundation
  • CoreGraphics
  • MessageUI
  • StoreKit
  • SystemConfiguration
  • CoreTelephony (注意这个在官网上面没用标明)
  • EventKitUI(新版本:6.12.0需新增的库)

  • EventKit(新版本:6.12.0需新增的库)

    CoreMedia(新版本:7.2.2需新增的库)

  • CFNetwork.framework
    GLKit.far
    CoreVideo.framework
    MobileCoreServices.framework
    CFNetwork.framework

具体Xcode设置可参考官方说明:https://developers.google.com/mobile-ads-sdk/docs/admob/ios/quick-start

特别提醒:配置Xcode环境时,记得要-ObjC添加至应用目标构建设置中的Other Linker Flags

  1. 在Xcode的项目导航器中,按蓝色的顶级项目图标。

   2. 点击目标,然后点击Build Settings标签。

   3. 在Other Linker Flags下,将-ObjC同时添加至DebugRelease

如果不设置的话,运行时会报异常:

<code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">***</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;"> </span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(43, 145, 175);">Terminating</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;"> app due to uncaught exception </span><span class="str" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">'NSInvalidArgumentException'</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">,</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;"> reason</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">:</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;"> </span><span class="str" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">'-[GADSlot state]: unrecognized selector sent to instance</span></code>

4、修改AppController.h文件,代码如下:

[objc] view plaincopy
  • // Admob Banner广告  
  • #import "GADBannerView.h"  
  • #import "GADBannerViewDelegate.h"  
  •   
  • @class RootViewController;  
  •   
  • @interface AppController : NSObject <UIApplicationDelegate, GADBannerViewDelegate> {  
  •     UIWindow *window;  
  •     RootViewController    *viewController;  
  •       
  •     // 将其中一个声明为实例变量  
  •     GADBannerView *bannerView_;  
  • }  
  •   
  • @end  

  • 其中引入的两个头文件就是与Admob中Banner相关的。而继承的GADBannerViewDelegrate类是监听是否接受到Banner请求,做回调用的。

    5、初始化和显示Banner广告。打开AppController.mm文件,在didFinishLaunchingWithOptions函数中添加以下代码来对Banner进行初始化:

    [objc] view plaincopy
  • - (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  
  •                               preserveBackbufferNO  
  •                                       sharegroup: nil  
  •                                    multiSamplingNO  
  •                                  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];  
  •     }  
  •       
  •     // =================添加Admob Banner广告==========  
  •     // 在屏幕顶部创建标准尺寸的视图。  
  •     // 在GADAdSize.h中对可用的AdSize常量进行说明。  
  •          // kGADAdSizeSmartBannerPortrait是Admob版本6.0.0之后支持智能横幅广告,  
  •     bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeSmartBannerPortrait];  
  •       
  •     // 指定广告单元ID。  
  •     bannerView_.adUnitID = @"Your_Banner_ID";  
  •       
  •     //设置代理  
  •     [bannerView_ setDelegate:self];  
  •       
  •     // 告知运行时文件,在将用户转至广告的展示位置之后恢复哪个UIViewController  
  •     // 并将其添加至视图层级结构。  
  •     bannerView_.rootViewController = viewController;  
  •     [viewController.view addSubview:bannerView_];  
  •       
  •     // 启动一般性请求并在其中加载广告。  
  •     [bannerView_ loadRequest:[GADRequest request]];  
  •       
  •     // ===================End=================  
  •       
  •     [window makeKeyAndVisible];  
  •       
  •     [[UIApplication sharedApplication] setStatusBarHidden:true];  
  •       
  •     cocos2d::CCApplication::sharedApplication()->run();  
  •   
  •     return YES;  
  • }  
  • 记得换上自己的Admob广告ID:

    [objc] view plaincopy
  • bannerView_.adUnitID = @"Your_Banner_ID";  
  • 其中的kGADAdSizeSmartBannerPortrait表示横幅广告的宽度会自动根据屏幕的宽度去自动适应(包括:横屏和竖屏的时候),具体可以参考官方说明:https://developers.google.com/mobile-ads-sdk/docs/admob/smart-banners。

    [objc] view plaincopy
  • //设置代理  
  •     [bannerView_ setDelegate:self];  
  • 还有这句代码的意思,其实说:为bannerView_添加一个监听,也就是上面AppContoller.h里面继承的GADBannerViewDelegrate类。

    6、实现GADBannerViewDelegrate类的两个回调函数:adViewDidReceiveAd 和 didFailToReceiveAdWithError,具体代码如下:

    [objc] view plaincopy
  • //实现GADBannerView的代理函数  
  • - (void)adViewDidReceiveAd:(GADBannerView *)view {  
  •     // 设置Banner的位置  
  •     CGRect contentFrame = viewController.view.bounds;  
  •     CGRect bannerFrame = CGRectZero;  
  • #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_6_0  
  •     bannerFrame = _bannerView.frame;  
  • #else  
  •     bannerFrame.size = [bannerView_ sizeThatFits:contentFrame.size];  
  • #endif  
  •     bannerFrame.origin.x = (contentFrame.size.width - bannerFrame.size.width) / 2;  
  •       
  •     // Banner广告将显示在最底部  
  •     contentFrame.size.height -= bannerFrame.size.height;  
  •     bannerFrame.origin.y = contentFrame.size.height;  
  •       
  •     // 这行代码会改变屏幕的高度,等于是广告的Banner和游戏画面按照纵向的线性布局了  
  • //    viewController.view.frame = contentFrame;  
  •       
  •     // 更改Banner位置  
  •     bannerView_.frame = bannerFrame;  
  • }  
  •   
  • // 获取Admob Banner广告失败后的回调函数  
  • -(void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error {  
  •     [view setHidden:YES];  
  •     NSLog(@"Failed to receive ad %@", [error localizedDescription]);  
  •       
  •     // 设置Banner的位置  
  •     CGRect contentFrame = viewController.view.bounds;  
  •     CGRect bannerFrame = CGRectZero;  
  • #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_6_0  
  •     bannerFrame = _bannerView.frame;  
  • #else  
  •     bannerFrame.size = [bannerView_ sizeThatFits:contentFrame.size];  
  • #endif  
  •     bannerFrame.origin.x = (contentFrame.size.width - bannerFrame.size.width) / 2;  
  •     bannerFrame.origin.y = contentFrame.size.height;  
  •     // 更改Banner位置  
  •     bannerView_.frame = bannerFrame;  
  • }  
  • http://blog.csdn.net/lognic10/article/details/25521449

    7、别忘了退出程序的时候释放一下bannerView:

    [objc] view plaincopy
  • - (void)dealloc {  
  •     // 如果您在项目中使用ARC,请勿发布bannerView_  
  •     [bannerView_ release];  
  •     [window release];  
  •     [super dealloc];  
  • }  

  • 总结

    以上是生活随笔为你收集整理的admob 接入的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。