时间:2021-07-15 | 标签: | 作者:Q8 | 来源:嫌疑人zx网络
小提示:您能找到这篇{iOS开发 如何将ADMob的插屏广告做成开屏广告}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的iOS开发 如何将ADMob的插屏广告做成开屏广告内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您! |
< ">需求:需要在用户进入应用时,弹出全屏广告,并且使用ADMob。 < font-size: 16px;">问题:现在的问题是ADMob并没有开屏广告,只有插屏广告,如果等用户进入界面 后再弹出插屏广告,在谷歌眼里,无意间弹出广告是违规的! < font-size: 16px;">方案:将插屏广告做成开屏广告 < font-size: 16px;">< font-size: 18px;">一.创建一个对象和工程名同名 < font-size: 16px;">< font-size: 18px;"> 创建对象 < font-size: 16px;">< font-size: 18px;">二.贴代码,备注很详细 < font-size: 16px;">XYRPlayer.h #import <UIKit/UIKit.h> @interface XYRPlayer : NSObject @end < font-size: 16px;">XYRPlayer.m #import "XYRPlayer.h" #import <GoogleMobileAds/GADInterstitialDelegate.h> @import GoogleMobileAds; @interface XYRPlayer()<GADInterstitialDelegate>{
UIViewController *AdViewController; } @property (nonatomic, strong) UIWindow* window; @property(nonatomic, strong) GADInterstitial *interstitial; @end @implementation XYRPlayer //在load 方法中,启动监听,可以做到无注入 + (void)load{ [self shareInstance]; } + (instancetype)shareInstance{ static id instance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [[self alloc] init]; }); return instance; } - (instancetype)init{ self = [super init]; if (self) {
///如果是没啥经验的开发,请不要在初始化的代码里面做别的事,防止对主线程的卡顿,和 其他情况 ///应用启动, 首次开屏广告 [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidFinishLaunchingNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { ///要等DidFinished方法结束后才能初始化UIWindow,不然会检测是否有rootViewController [self show]; [self CheakAd]; }]; ///进入后台 [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidEnterBackgroundNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
}]; ///后台启动,二次开屏广告 [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationWillEnterForegroundNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { [self show]; [self CheakAd]; }]; } return self; } -(void)CheakAd{//这一部分的逻辑大家根据自身需求定制 //谷歌插屏广告 if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"adshow"] intValue]!=0) {//后台控制是否显示广告 if([[NSUserDefaults standardUserDefaults] objectForKey:@"admob_pid_chaping"]!=nil){//是否从后台获取到pid if(![[NSUserDefaults standardUserDefaults] boolForKey:@"VIPUser"]){//是否是工作人员,工作人员免广告 NSArray *chapingArr=[[NSUserDefaults standardUserDefaults] objectForKey:@"admob_pid_chaping"]; self.interstitial = [[GADInterstitial alloc] initWithAdUnitID:chapingArr[0]]; self.interstitial.delegate=self; GADRequest *request = [GADRequest request]; [self.interstitial loadRequest:request]; }else{ &nb自己怎么做推广sp; [self hide]; } }else{ [self hide]; } }else{ [self hide]; } } - (void)show{ ///初始化一个Window, 做到对业务视图无干扰。 UIWindow *window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; AdViewController=[UIViewController new]; window.rootViewController = AdViewController; window.rootViewController.view.backgroundColor = [UIColor clearColor]; window.rootViewController.view.userInteractionEnabled = NO;
&n社会化媒体危机公关bsp; ///广告布局 [self setupSubviews:window];
///设置为最顶层,防止 AlertView 等弹窗的覆盖 window.windowLevel = UIWindowLevelStatusBar + 1;
///默认为YES,当你设置为NO时,这个Window就会显示了 window.hidden = NO; window.alpha = 1;
///防止释放,显示完后 要手动设置为 nil self.window = window; } - (void)hide{ ///来个渐显动画 [UIView animateWithDuration:0.3 animations:^{ self.window.alpha = 0; } completion:^(BOOL finished) { [self.window.subviews.copy enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { [obj removeFromSuperview]; }]; self.window.hidden = YES; self.window = nil; }]; } ///初始化显示的视图, 可以挪到具 - (void)setupSubviews:(UIWindow*)window{ ///随便写写 UIImageView *imageView = [[UIImageView alloc] initWithFrame:window.bounds]; //和启动图一样,给用户造成错觉 imageView.image = [UIImage imageNamed:@"ADImage.png"]; imageView.contentMode=UIViewContentModeScaleAspectFill;
[window addSubview:imageView]; } #pragma mark -GADInterstitialDelegate - (void)interstitialDidReceiveAd:(GADInterstitial *)ad{//接收到插屏广告 [self.interstitial presentFromRootViewController:AdViewController]; } - (void)interstitial:(GADInterstitial *)ad didFailToReceiveAdWithError:(GADRequestError *)error{//插屏广告请求失败 [self hide]; } /**********************/ - (void)interstitialWillPresentScreen:(GADInterstitial *)ad{ //插屏广告即将开始 NSLog(@"插屏广告即将开始"); } - (void)interstitialDidFailToPresentScreen:(GADInterstitial *)ad{ //插屏广告失败 NSLog(@"插屏广告失败"); } - (void)interstitialWillDismissScreen:(GADInterstitial *)ad{ //插屏广告即将消失 NSLog(@"插屏广告即将消失"); [self hide]; } - (void)interstitialDidDismissScreen:(GADInterstitial *)ad{ //插屏广告已经消失 NSLog(@"插屏广告已经消失"); } - (void)interstitialWillLeaveApplication:(GADInterstitial *)ad{ //插屏广告即将离开APP NSLog(@"插屏广告即将离开APP"); } @end < font-size: 16px;">< font-size: 18px;">三.其他注意事项 < font-size: 16px;">1.一般第一次启动都无法请求到广告。 < font-size: 16px;">2.你需要特别注意didFinishLaunchingWithOptions里配置好谷歌广告,不然没法正常显示: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//设置tabBar的字体颜色 [self setTabBarItemFontColor]; //请求数据 [self loadUserData];
//配置 [self Configuration];
//谷歌广告 [self loadGoogleAd];
//网络监控 [self netWorkChangeEvent];
return YES; } -(void)loadGoogleAd{ // Use Firebase library to conf信息流包括哪个igure APIs [FIRApp configure]; // Initialize Google Mobile Ads SDK [GADMobileAds configureWithApplicationID:@"你的admob_appid"]; } < font-size: 16px;">3.CheakAd这个方法大家最好不要用,有点误导你们了,这个是我自己的需求,你们用的时候最好把这个函数删掉!不然会出现广告闪一下就消失的问题,我自己是在其他地方做了处理的,这个地方没有贴出来! < font-size: 16px;">4.如果你看见的效果是先进入根视图,再出现广告,那很有可能是你少了一张伪装的启动图,就是把最大的启动图重新命名成ADImage.png,并且拖入工程中,不是放在LaunchImage中哦!(名字也不一定叫ADImage啦,你随意,但是代码里面的名字也要记得改!) |
上一篇:Unity3d集成Firebase统计和Admob广告最新中文教程
下一篇:Google Admob的经验分享
基于对传统行业渠道的理解,对互联网行业的渠道我们可以下这样一个定义:一切...
小米应用商店的后台操作和苹果是比较相似的,因为都能填写100字符关键词,允许...
小米的规则目前是在变更中的,但是根据经验小米的搜索排名评分的高低是个很重...
为了恰饭,有时候是要接入一些广告的,所以FB也专门有一个广告的SDK,这就是A...
在 2018 年于旧金山举行的游戏开发者大会上,Amazon Web Services (AWS) 曾宣布,目前世...
关于Facebook Audience Network如何收款的问题,其实官方已经给了详细的步骤。本文主要...
本文介绍了Audience Network对广告载体的质量检查,以及它重点广告形式需要注意的问...
随着iOS开发,作为开发者或公司需要针对iOS App开发涉及的方方面面作出对应的信息...
Facebook和谷歌对出海企业广告渠道都很熟悉,但事实上,在国外还有一些渠道也很...
卖家从做号的第1分钟开始,就一定要想好变现路径是什么?一定要以变现为目的去...
小提示:您应该对本页介绍的“iOS开发 如何将ADMob的插屏广告做成开屏广告”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通iOS开发 如何将ADMob的插屏广告做成开屏广告的相关事宜。
关键词:iOS开发,如何将ADMob的插屏