GoogleMobileAds.framework7到底怎么玩

虽然在App中加入广告来盈利是比较低级的商业化方式,但对于个人开发者或者小团队开发者来说,做出一个简单易用的免费小工具(举个栗子),在里面加入一些广告,如果用的人多,也是可以带来一些可观的收入的。用户没有掏钱,得到了方便,开发者也得到了回报:)
我个人出于对金钱的考虑和对Google的信任,选择了AdMob这个平台来在App中投放广告( 访问需要搭梯子,梯子为SS的用户最好全局代理,自动代理的话访问起来会很卡)。
就目前来看,我果还是不太擅长移动App广告这一块,所以不推荐大家用iAd(好像现在还是不支持中国大陆?听说前一阵子Apple解散了有一百来人的iAd部门?)国内的一些其他平台也是有所听说,但是没有尝试,如果大家知道有什么其他的好的可以在移动App上投放广告的平台,也欢迎评论,一起交流~
1.首先,你要有一个Google账号,登录2.进去之后,点网站右上角的设置按钮,把各种资料该填的都填了,什么电话、邮箱、地址之类的。
AdMob网站截图
注意,地址要填真实地址,在Google给你汇款之前,他要给你邮寄一封实体信件,上面有一个PIN码,你要把这个PIN码输入到AdMob网站上的相应位置,Google才会开始你给你汇款。我现在已经验证过身份了,没办法截图,好在这个网站也不复杂,就那么几个页面。要做好收不到这个信件的准备(包括我在内的国内N多开发者都收不到这个信件,不知道是不是邮政的问题),如果1个月没有收到这个信件,可以再次申请让Google邮寄信件,总共有3次机会,3个月以后,还没收到信件,可以上传身份证照片(我就是这样),然后Google会以极速(我当时是几个小时)通过这个请求。不过毕竟等了三个月,如果你第一次就准确无误地填了地址,运气又很好的话,可以1个月内就让Google准备给你付款。付款规则是每个月进行一次统计,如果到了100美金,就汇款,否则计入下个月,直到攒够100美金,汇款时间是下个月的21号。比如你1月赚了30刀,2月就不会收到钱,2月赚了110刀,3月的21号Google会把你赚到的总共140刀都汇款给你。
3.接下来的过程就不赘述了,无非是去AdMob里面添加个应用,拿到一个类似 app-key 的识别码(AdMob里面叫ca-app-pub,每个广告对应一个识别码,一个App可以加入多个横幅式广告或插页式广告,一个App可以对应多个识别码),把 GoogleMobileAds.framework 下载下来,看一下人家的示例代码,就集成到App了。
横幅式广告与插页式广告
开发者在App中加入广告时,要极力避免让用户感到非常厌烦。如果你的App帮用户解决了问题,那用户看看广告也无所谓,人家解决了手头的问题才是正事,但是满屏的广告不停地弹,那也未免吃相不好,用户可能一怒之下把App删掉。
左边为横幅式广告
右边为插页式广告
横幅式广告的好处在于,虽然占用了用户一部分屏幕空间,但是只要你不点击它,它不会影响用户的其他操作,只要你的广告条没有遮挡任何内容,那么这个横幅除了碍眼之外,对用户使用App基本没有影响。
而插页式广告则是以弹窗的形式出现,用户需要去左上角或者右上角点击一下关闭按钮才行,应该说是比横幅式广告要更讨厌一些(反正我是这么觉得的),应该说这是略为严重的打扰了用户对App的使用的。但是好处在于,插页式广告是以全屏弹出的形式出现的,它不影响你设计的App界面的纯净度,让你有100%的空间来展示你需要布局在UI中的东西,比如你做了一个UI极简的应用,整个App都是纯黑+纯白的,这时候加一个颜色复杂的横幅广告,就很影响观感。
还有一种情况是你希望你的用户付费来去除广告,可以是在App中加一个付费去广告的内购,也可以鼓励用户付费升级应用到高级版,这种情况下可以尝试横幅式广告和插页式广告都添加。一部分用户对你的App有需求,又不想频频被广告打扰,就可以选择付费。不过这种情况下,我们可以认为添加广告的目的之一就是为了去打扰用户,迫使用户付费,所以应该适可为止,不要过于频繁地弹出广告,这真的挺烦人的。
展示广告的代码技巧
1.在 UITableView 底部展示横幅广告
var admob = GADBannerView()
注释部分的代码可以,这段代码的意思是让 UITableView 的可滚动内容区域在底部收缩,收缩长度为banner广告条的高度。这样在用户一直向上拖拽 UITableView 直到尽头的时候,可以让它的可拖拽区域比之前大一些,就不至于让广告遮挡了 UITableView 的最后几行。
如果你的 UITableView 是存在于 UITableViewController 中的,那么 UITableView 的 frame 是不可调节的,所以通过上面的代码,我们可以方便地避免广告遮挡原有的内容。而即便你的 UITableView 是存在于 UIViewController 中的,即这个 UITableView 是你自己添加进来的,你可以任意调节 frame,我依然建议你用上面这种方法,而不是直接把 UITableView 的 frame 调小,来给广告空出位置。因为你的广告并不一定能显示的出来,可能是用户把你的广告屏蔽了,也可能是网络状况不好,这时候反正你的广告也显示不出来,应该给用户更多的屏幕空间来显示 UITableView 的内容。
2.利用定时器轮询插页式广告加载状态
这里不太恰当的使用了“轮询”这个词,大家意会就好。假如你要弹出一次插页式广告,那么Google给出的示例代码是下面这个样子
如何创建 GADInterstitial 媒体资源、初始化该资源并随广告加载它
展示插页式广告
这里的展示逻辑是:不要打扰用户玩游戏的过程,在用户玩游戏的过程中默默地加载广告,等用户一次游戏结束了,如果这时候广告加载好了,就把广告弹出来。
然而实际情况是,我们的应用可能不是游戏,并没有一个这么明显的类似完成了一局游戏这样的一个段落结束的地方。这时候你可能希望每30秒弹出一次插页式广告,然而这个广告可能是第40秒才加载好的,这就导致了:虽然你设置的是30秒显示一次广告,但是30s的时候广告没加载好,就没显示出来,60s的时候显示了40s时加载的广告。而更理想的情况是:30s时没能加载好广告,我们就开始轮询,直到广告加载好了,也就是40s时,把广告显示出来,然后设定第70s时展示下一次广告。
下面给出一段示例代码,这里的广告展示逻辑是:每60秒展示一次广告,如果到了这个时刻,广告没加载好,就设置定时器每3秒查看一次广告资源是否就绪,直到广告加载好了,展示广告,然后设置60秒后出现下一次广告。
import UIKit
class ExampleViewController: UIViewController {
上面的代码中的关于定时器方面的内容,就不在这篇文章中写了,如果看着费劲的话,欢迎在下面评论,我也可以再写一篇关于定时器的文章。关于 private 和 @objc 关键字部分可以参考。
文/KyXu大魔王(简书作者)原文链接:/p/c55b著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
阅读(...) 评论()2170人阅读
cocos2d-x(35)
1.为什么要用cocoapods我喜欢搞游戏的一个原因:游戏不需要涉及太多变化的API。如果你搞多安卓和IOS原生开发就知道了。有些4.X能用的Android API,在2.X就不能用。IOS也是一样,IOS8有增加了不少API。游戏这块本质上就是在画布上画东西,比较纯粹。软件开发最喜欢的就是使用第三方库。不用重复造轮子。但是接入的第三方库一多起来就会非常麻烦。各种依赖问题。后续升级问题。都是非常头痛。游戏开发比较蛋疼的是接入各种广告SDK,渠道SDK。好像cocos2d 的AnySDK比较好用,没用过。cocos2d好像也在搞跟cocoapods 功能类似的东西。搞了半天还没说cocoapods是干嘛用的。搞原生IOS开发的可能对cocoapods比较熟悉,cocoapods就是用来搞第三方库的。看下cocoapods如何更加方便地安装google admob ads sdk你就知道为什么要使用它了。2.土办法在cocos2d中使用google admob ads sdk先准备梯子用搜索引擎搜索 google admob 文档,下载最新的google admob for IOS。整个东西解压出来:复制到你的游戏项目中,然后XCode,把所有的文件添加进来。这个时候Library Search Path一般都是绝对路径,把它改成相对路径:$(SRCROOT)/../Ad/GoogleMobileAdsSdkiOS-6.12.2然后开始编译。出现错误。发现google admob 的系统依赖framework没搞。添加各种framework:AVFoundation,AdSupport,AudioToolbox,CoreGraphics,CoreTelephony,MessageUI,StoreKit,SystemConfiguration。然后重新开始编译,还是错误。然后各种google 搜索,baidu 搜索。发现蛋疼的最新版google admob还需要EventKit,EventKitUI。 加上它们,继续重新编译。如果幸运地话会成功。失败的话就要搞Other Linker Flag,加上-ObjC? 最后-force_load &$(SRCROOT)/../Ad/GoogleMobileAdsSdkiOS-6.12.2/libGoogleAdMobAds.a& 总算搞定。如果IOS升级到9,Google admob就会升级。然后你要把老的全部删除。新的这样重新来一遍,血都会吐光。鬼知道,又少了什么系统依赖导致编译错误。鬼知道会不会正确载入那个xx.a文件。作为游戏开发者,你只想快点搞定这些蛋疼的第三方SDK接入,好赶快去编写游戏具体的逻辑,而不是在这种地方浪费时间。幸运的是有Cocoapods,幸运的是google admob 支持Cocoapods。我们来看下用cocoapods安装google admob会是如何的步骤。3. 使用cocoapods 安装 google admob假设你的Mac已经安装好cocoapods.打开终端,输入 pod search google,会列出google的很多支持cocoapods 安装的IOS库。发现admob的名字是叫google-admob-ads-sdk。然后我们换成pod search Google-AdMob-Ads-SDK。搜索结果如下:好清晰!最新的版本是6.12.2,还有些老的版本,不管它。然后打开文本编辑工具。我这里使用Sublime2,输入:platform :ios, '5.1.1'
pod 'Google-AdMob-Ads-SDK', '~& 6.12.2'然后保存文件名为PodFile,没有后缀,放到你的cocos2d项目中的ios项目目录下。像这样:然后在proj.ios_mac目录下打开终端,输入pod install。稍等片刻,google admob ads sdk就安装好了,所有的系统依赖都会自动弄好。是不是帅的掉渣?cocoapods提示叫我们使用Match3.xcworkspace,而不是之前的Match3.xcodeproj. IOS项目目录下多了一些东西,有Podfile.lock,还有一个pods文件夹,里面有最新的Google-AdMob-Ads-SDK& 6.12.2。 第一次看到这个的时候太叼了。 接着我们打开Match3.xcworkspace,发现在游戏项目种多了一个Pods的文件夹,里面有两个配置文件。另外下面多了一个Pods的项目,它会生成libPod.a和libPods-Google-AdMob-Ads-SDK.a。非常高兴地开始编译整个游戏。可惜遇到了编译错误:cocos2d.h not find!,血吐光!!不是说要cocoapods安装会好些吗?怎么搞的?打开Pod.debug.xcconfig 和 Pod.release.xcconfig中的HEADER_SEARCH_PATHS 和 LIBRARY_SEARCH_PATHS中加入$(inherited) 完整如下:GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) &${PODS_ROOT}/Headers/Public& &${PODS_ROOT}/Headers/Public/Google-AdMob-Ads-SDK&
LIBRARY_SEARCH_PATHS = $(inherited) &$(PODS_ROOT)/Google-AdMob-Ads-SDK/GoogleMobileAdsSdkiOS-6.12.2&
OTHER_CFLAGS = $(inherited) -isystem &${PODS_ROOT}/Headers/Public& -isystem &${PODS_ROOT}/Headers/Public/Google-AdMob-Ads-SDK&
OTHER_LDFLAGS = -ObjC -l&GoogleAdMobAds& -l&Pods-Google-AdMob-Ads-SDK& -framework &AVFoundation& -framework &AdSupport& -framework &AudioToolbox& -framework &CoreGraphics& -framework &CoreTelephony& -framework &EventKit& -framework &EventKitUI& -framework &MessageUI& -framework &StoreKit& -framework &SystemConfiguration&
OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS)
PODS_ROOT = ${SRCROOT}/Pods继续编译,还是出错,又是libGoogleAdMobAds.a的问题。在Other Linker Flag,加上 -force_load &$(PODS_ROOT)/Google-AdMob-Ads-SDK/GoogleMobileAdsSdkiOS-6.12.2/libGoogleAdMobAds.a&总算搞定:3.使用cocoapods总结虽然还是遇到了头文件搜索目录和.a文件载入的问题,但是已经比原始的土办法好了很多。1.它自动地解决了系统依赖库的问题2. 解决后后续更新的问题。后续更新只需要先更改PodFile的版本号,输入pod update就OK了。3. 所有第三方库都放在一个pods项目中,比较有调理。当然这只是简单地接入google admob ads sdk,要真正使用它,还是要仔细地看文档。有什么banner Ad,全屏Ad,各种banner Ad尺寸,还有banner Ad位置等等。以后有空介绍下它们。4. 安装cocoapods安装cocoapods我放到了最后讲,因为比较简单:gem sources --remove https://rubygems.org/
gem sources -a http://ruby.taobao.org/
sudo gem install cocoapods
pod setup因为在天朝,那个源被墙了,所以要先移除,然后换成淘宝的源。然后gem install cocoapods就可以了。要等待比较久的时间,因为总共cocoapods大概在50-80MB大小。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
邮箱: #(#换成@)
访问:549162次
积分:7593
积分:7593
排名:第2891名
原创:206篇
评论:157条
文章:13篇
阅读:42540
(5)(2)(1)(2)(1)(1)(1)(1)(4)(1)(2)(10)(2)(28)(3)(2)(4)(4)(2)(4)(4)(3)(7)(4)(4)(10)(4)(4)(4)(4)(4)(1)(4)(4)(5)(4)(5)(5)(6)(4)(5)(6)(7)(4)(4)(2)(3)(6)主题 : 如何添加GoogleMobleAds.framework(Xcode 6.2 iOS SDK 8.2 )
级别: 新手上路
可可豆: 111 CB
威望: 110 点
在线时间: 152(时)
发自: Web Page
来源于&&分类
如何添加GoogleMobleAds.framework(Xcode 6.2 iOS SDK 8.2 )&&&
升级到 Xcode 6.2 iOS SDK 8.2将GoogleMobileAds.framework加到工程后,只有一个Headers文件,没有真正的.h文件,自然import会报错,如何破?
图片:Screen Shot
at 下午12.03.06.png
级别: 骑士
可可豆: 567 CB
威望: 557 点
在线时间: 2533(时)
发自: Web Page
为什么我的有?我是下的版主提供的SDK,你去看看版主的帖子吧,置顶了应该
级别: 新手上路
可可豆: 110 CB
威望: 100 点
在线时间: 142(时)
发自: Web Page
经常遇到,这是文件损坏,重新拷贝一下就好
级别: 精灵王
发帖: 1005
可可豆: 1677 CB
威望: 1671 点
在线时间: 1185(时)
发自: Web Page
7.0挺麻烦的,不但要改好几个设置,官方的例子也完全不能用。但总体是可以用的。就用老方法,新sdk的自动引用什么的不一定可以用
级别: 精灵王
发帖: 1625
可可豆: 13790 CB
威望: 14055 点
在线时间: 1400(时)
发自: Web Page
@import GoogleMobileA
苹果I派党每天提供AppStore精品、限时免费APP评测推荐,坛子里的兄弟想推广的可以直接PM我.
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版相关文章:&&&&&&&&&&&&&&
最新添加资讯
24小时热门资讯
附近好友搜索1.请确保您使用的是最新版本的Android SDK,且编译所针对的至少是Androidv3.2(将project.properties中的target设为android-13)。
2.Google Mobile Ads SDK(Android版)要求使用Android 2.3或更高版本的运行时文件(在AndroidManifest.xml中至少将android:minSdkVersion设为9)。这表示,您可以使用最新版本的Android SDK进行开发,而您的应用仍能在更早版本的Android(最低2.3版)上运行。
二:加入SDK
将Google移动广告加入应用是一个简单的过程:
1.在您的Eclipse工作空间中添加和引用Google Play服务库项目。
2.在AndroidManifest.xml中添加meta-data标记。
3.在清单中声明com.Google.android.gms.ads.AdActivity。
4.在清单中设置网络权限。
&1&添加和引用Google Play服务库项目
a.在Eclipse中右键点击您的应用项目,并选择Properties。
b.选择Android,然后点击Add...。找到Google-play-services_lib项目,然后选择OK以添加Google Play服务库。
c.项目现在即会引用Google Play服务库
&2&添加meta-data标记
Google Play服务要求您在应用的AndroidManifest.xml的元素内添加以下meta-data标记:
&?xml version=&1.0& encoding=&utf-8&?&
&manifest xmlns:android=&/apk/res/android&
package=&pany& android:versionCode=&1& android:versionName=&1.0&&
&application android:icon=&@drawable/icon& android:label=&@string/app_name&android:debuggable=&true&&
&meta-data android:name=&com.Google.android.gms.version&
android:value=&@integer/Google_play_services_version&/&
&activity android:label=&@string/app_name& android:name=&BannerExample&&
&intent-filter&
&action android:name=&android.intent.action.MAIN&/&
&category android:name=&android.intent.category.LAUNCHER&/&
&&&&& &/intent-filter&
&&& &/activity&
& &/application&
&/manifest&
&3&声明com.Google.android.gms.ads.AdActivity
Mobile Ads SDK要求您在应用的AndroidManifest.xml中声明com.Google.android.gms.ads.AdActivity
&?xml version=&1.0& encoding=&utf-8&?&
&manifest xmlns:android=&/apk/res/android&
package=&pany& android:versionCode=&1& android:versionName=&1.0&&
&application android:icon=&@drawable/icon& android:label=&@string/app_name&android:debuggable=&true&&
&meta-data android:name=&com.Google.android.gms.version&
android:value=&@integer/Google_play_services_version&/&
&activity android:label=&@string/app_name& android:name=&BannerExample&&
&intent-filter&
&action android:name=&android.intent.action.MAIN&/&
&category android:name=&android.intent.category.LAUNCHER&/&
&/intent-filter&
&/activity&
&activity android:name=&com.Google.android.gms.ads.AdActivity&
android:configChanges=&keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize&/&
&/application&
&/manifest&
&4&设置网络权限
要创建广告请求,必须在清单中声明以下权限:INTERNET
用于访问互联网以发送广告请求。ACCESS_NETWORK_STATE
KeyMob移动广告平台,简称“KeyMob广告”,是为开发者提供精准稳定的SDK,KeyMob平台有横幅广告、插屏广告、积分墙和视频广告等广告形式,KeyMob平台完美打造用户体验,铸造开发者高收益!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:39825次
积分:1746
积分:1746
排名:千里之外
原创:142篇
(48)(73)(21)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'

我要回帖

更多关于 framework 4.0 的文章

 

随机推荐