unity接广点通sdk接入安卓SDK

让推广菌又爱又恨的广点通怎么玩儿?我们来扒一扒
广点通真是让推广菌们又爱又恨啊,8亿用户,百亿流量使它成为推广渠道的霸主,是推广首选;然而素材两要求极大,图片制作要求之高,定向条件多,又让推广菌们对它恨之入骨。到底该怎么玩儿?
原标题:秋妈说 玩转腾讯系资源五步走——广点通基础优化篇
广点通作为当下APP推广的绝对主流渠道之一,广大CP对它可谓又爱又恨。素材量要求极大,图片制作要求高,定向条件多….让推广菌们恨之入骨,量大,价格低,又让大家欲罢不能。然而8亿用户,百亿流量依然奠定了推广渠道的霸主地位,是各位推广菌绝对的首选。今天秋妈就来给大家扒一扒广点通运营优化的方法。
Step1:账户设置很重要
秋妈曾见过某CP自己的广点通账户,所有计划全部按照素材取名。例如:裙子、裤子、短裙、床单等等。等到要回头翻查计划,或区分ios和安卓不同订单的时候,才发现完全扒不出来。
如何合理设置广点通账户呢?首先,我们需要了解,广点通账户设置分三级,账户-计划-订单,计划和订单取名字颇具技巧。
其次账户清晰好辨认,逻辑强的计划和订单名称是广点通最基本的要求,一般建议大家按以下规则:
0827(日期)-微信(广告位)-ios(终端)-APP名称(多APP投放的广告主)
Step2:不会做素材的设计不是好运营
广点通的核心竞争力90%在于素材。曾经有人说,只要人群定位准了素材随便上。后来听说此人已经离开本圈回老家卖保险。以往广点通最盛行的素材是宫格类,例如:
据广点通的最新规定,宫格类素材宫格数目不能超过4个,不能有对比图的植入。(此处也同步大家新广告法执行开始,各位注意法律问题)困扰了很多初期用惯了宫格素材的推广菌。宫格类素材好用,但是这里给大家介绍一些秋妈和微思敦小伙伴在工作中摸索出来的有效素材形式:
1、新版宫格,例如:
这类素材其实还是宫格的呈现方式,但利用了不规格的宫格尺寸,和不同的排列,将宫格素材变形。格子内还是以统一的产品或统一的风格图片为主,相比传统宫格,既保留了宫格的视觉冲击,大小不一的排版视觉上也比较有层次!
2、横版素材,例如:
这类素材往往适用于穿搭、电商类,可以将全身的搭配体现出来,整体呈现效果也比较符合女性审美。
3、海报素材,例如:
投放海报素材,品牌广告主占据天然优势,普通的广告主尝试的时候需要注意以下两点:简约和爆点。简约体现在字少点最好,爆点体现在活动火爆,主体突出。
秋妈tips:素材一周内起码更换一次,同时在线素材不少于20-30。否则别问为什么没量!
Step3:人群筛选到底准不准?
广点通投放人群非常精细, 后台强大堪称行业第一,但其中有部分筛选项极不准确。
1、地域:地域定位不准确几乎每个平台都存在,因为广点通的地域很精准,也更容易出现不准确的情况。在移动端来说,如果你连接了wifi,地址可能会随着网络供应商而改变,产生不准确的情况。
2、定向未安装该APP的设备(安卓):
该功能看似很强大,事实上很大一部分是定位不准的。这里秋妈也给大家交个底,不准率达40%-50%(该数据未经官方证实),且秋妈自己也遇到过多次定位不准的情况。
Step4:做不好数据因为你不懂这些!
数据问题困扰了很多广点通CP,以下三种情况是CP最常见的问题:
1、点击率不错,没人下载。这类情况秋妈遇到过一些。大部分是因为推广菌在挂羊头卖狗肉。素材上推的是美女化妆去约会,下载页却是一帮大老爷们炒股票。下载率高才怪。
2、下载率不错,激活率低。这种情况部分是因为APP本身过大或受时间、环境等因素影响,用户流失在了安装等中间环节。另外需求越强烈,往往激活率也越高。例如一个阅读类APP,和一个电商类APP,下载到激活的转化往往存在差异。
3、为什么广点通记录的下载量和应用宝下载量对不上?应用宝仅记录通过应用宝APP下载的应用,而广点通的广告在没有下载应用宝的设备上是可以越过该步骤直接下载推广APP的。
Step5:广点通监测方法大全
广点通不好监测大家都知道,主要因为投放的是id不是链接,导致安卓的数据全部记录在应用宝,ios全部记录在appstore。目前一般用到的监测有以下几种:
1、减法估算:这个不用赘述,总量减去自然量减去其他渠道量即可。安卓和ios均适用。
2、应用宝分包(安卓):即上传一个渠道包专门用来投放广点通。这部分数据会有些许差异。相关人士称因为渠道包功能仅被新版应用宝支持,市面上仍有30%老版应用宝。
3、sdk或api对接:
该方式安卓ios均适用,碍于技术层面问题,部分CP实现缓慢,或和平台方对接产生问题。
本文由APP干货铺子投稿梅花网,原作者为秋妈,版权归原作者所有,转载请保留原文链接,并在文章开始处标注以下信息:&
作者:微思敦秋妈(微信号fqy)
消息源:梅花网()-营销者的信息中心
向梅花网投稿,请发送稿件至,详情请参阅《》。
&后参与评论
微信公众号:梅花网盘点我做DSP信息流投放的血泪经验!
这篇经验分享并非与大家第一次见面,此次重新见面,文章针对近来信息流广告的变化情况做了相应的更新。
笔者有幸参与公司的一款重度游戏的推广,推广以来市面上主流的DSP平台都投过一番。今天就零零碎碎地讲讲各个DSP平台的特点以及用户质量。需要提前说明的是,文章的观点仅限于各个平台的iOS流量,并且是基于本人投放的游戏数据表现进行的评价。不同行业甚至不同游戏在各个平台投放的数据表现也可能不一致,欢迎有与本文不同观点的艾豆进行讨论,撕逼勿扰。
一、广点通
广点通是个让人又爱又恨的平台,推广到一定阶段会出现瓶颈期。总结来说就是,iOS有量,但是iOS的量需要抢,成本会持续飙高;用户的活跃好,但是付费能力欠佳。
广点通的主要流量来源是QQ空间,QQ空间的日活毋庸置疑是不错的,笔者的游戏投放广点通,几百兆的游戏包,巅峰时期iOS日激活可达3万,到现在投放了比较长一段时间,日均激活仍有1000,量级是别的平台不可比拟的。如果cpc竞价还是难有量的话,建议试试新的ocpa竞价的模式,opca单价高时,容易抢到量。笔者推广的游戏,在ocpa出价到70-80时,一般都能有500+的激活。
但是,广点通的成本比较难控制,游戏行业iOS的流量竞争加剧,从今年的三四月份起,广点通平台的平均ecpm值到现在9月份就增长了快1倍,这对于广告主来说,就是在广点通抢量的成本一直在飙高。说起来一把辛酸泪,我们广点通的成本从巅峰的10块以下的激活成本,到现在是80+。
另外一个就是广点通的用户偏低龄化,这个大致想一下也知道,现在身边玩QQ空间的大部分是22岁以下人群。特别是寒暑假,学生放假,低龄用户占比会更大。这部分用户的付费能力欠佳,但是在游戏中的活跃度较好。
广点通平台还有一个特点是,好的热门IP同名改编手游,追星风潮盛大。以及QQ游戏大厅上一些经典页游改编的手游,如拳皇类产品。腾讯系的游戏更好推,腾讯内部的平台相互洗流量。
还有一点就是,广点通的平台切忌关停账户、暂停投放。暂停投放对账户的影响非常大,暂停一次很有可能就会让账户到万劫不复的地步,系统分配的流量以及流量的质量度都会受很大影响。
推广到一定阶段广点通会让人感到非常尴尬,有量级,但是成本难以控制,回收速度跟不上的时候,该怎么办?食之一点味,弃之可惜。那到底要不要继续投?我们反正投,建议你们都别投了(把量留给我们,没有竞争就没有伤害!!!)。
二、今日头条
今日头条笔者总结来说,就是一个不值得花费太多精力,付出和产出不成正比的平台。非常看重,不断优化,但是结果往往令人失望。
首先,今日头条的ios抢量实在是太难,可以说ios的量几乎没有多少。起量实在是太难,笔者家每天上新计划,上新素材,最好的也就是一天300激活这个水平。另外笔者家还投放过今日头条的cpt购买的开屏,信息流GD这些资源,按固定曝光购买,成本也是让人瞠目结舌。感觉今日头条过度商业化,本身的流量撑不起这么多广告投放,导致量小。
虽然今日头条量小,但是蚊子腿细也是肉。今日头条怎么优化呢?今日头条的素材点击率很关键,直接决定了流量的分配。如果账户广告计划的点击率一直处于低的状态,就需要提高cpc出价抢量,系统给量后,放大流量点击率又会进一步下降,又会需要提高出价,陷入一个死循环。如果账户一直处于一个低点击的状态直接影响了账户的质量度,新上的广告计划,系统也会默认你的点击率很低,给的量很少。
所以笔者是建议,今日头条点击率低于0.8%的素材,看下转化率,转化率不行可以直接关了,如果转化率可以的话可以试试提高出价。高点击率的素材,转化率差的,是坚决需要关掉,没有任何作用只会花你的钱,给广告平台作贡献。还有一个是,可以试试内涵段子的gif的广告位,转化还不错。
还有一个想吐槽的是,今日头条的系统很诡异,感觉从今年5月中旬开始,会出现莫名奇妙的bug,难以言说只可意会。后台的下载完成数莫名其妙的多,后台下载完成数到实际的激活,转化率低于10%的情况笔者家也是有投出来过,至今没找出问题所在;有时候素材点击率高的,突然爆量,一两个小时默不作声烧掉几万块,需要随时看着,或者设置预算上限,不然一不小心钱就烧没了;换了新后台以后也莫名奇妙的没量。反正种种,都是离奇事件,只能说仔细盯住后台投放端,不然吃亏的可是自己,出事了只能含泪写辞职信。
说了这么多吐槽今日头条的话,大家可能会有疑问,这么不好的平台那大家为什么还如此痴迷。那是因为它的用户付费好啊!!!有什么办法呢,今日头条虐我千万遍,我待今日头条如初恋。今日头条的用户只要你抢到了,付费能力绝对是杠杠的。所以大家还是擦干眼泪,打开后台继续操作吧。(以上吐槽仅基于个人投放经验,也有很多朋友在这个平台投的不错,见仁见智)
三、UC头条
对比今日头条,UC头条可真是一个让人省心的宝宝。iOS有量,成本可控。系统相对简单,稳定。但用户付费,稍次于今日头条。
可能很多人会说UC头条安卓用户占比大,iOS没量,但是我们投出来的事实告诉我们,iOS有量,有量!并且后台相对简单,很稳定。只要一条计划投出来了,就可以高枕无忧,素材退化周期很长,同样的素材用一个月都问题不大,成本也可控。笔者投放的游戏,之前UC头条基本都可以稳定在日均700的激活,成本可空,浮动不大,但是ROI会次于今日头条。
听小道消息,下半年UC头条系统稳定性大幅提升,流量稳定,用户质量也有提升,待大家验证。
UC头条的系统虽然稳定,但是不讲道理,跟广点通一样,切忌暂停投放,不能关停账户。账号累计的消费越高,权重越高。一旦关停,系统判定账户差,直接打入冷宫。笔者已经踩了两次坑,第一次重新开启后,账号从前面说的日均激活700左右,直接到激活100以下,成本100+,还有一次重开后从一天300左右的激活,又到100以下。不说了,都是泪,我先去开个新户。
四、智汇推
智汇推笔者家的游戏一直没投起来,没量,成本也比较难控制。究其原因可能是包体太大,好几百兆。
在投之前听过很多代理说,XXX家的游戏智汇推每天有1000多的激活,XXX家的游戏在我们家投的,每天都消耗好几万。实际投出来,发现童话里都是骗人的,智汇推可能会合适一些休闲游戏推广,包体比较小的。
笔者家的游戏智汇推没量,一个原因也是智汇推的素材难以把控。偏宣传图类型的素材投出来转化成本高。但是游戏场景图又难以过素材审核。投放5个多月了,至今没有找到一个素材的方向。哪位好心人有成功经验求教!!
虽然没量,但是智汇推的用户付费能力很好,投放的回收很好。建议是在成本可接受的范围内收量,不强求要量。
五、联盟流量三巨头Inmobi/Glispa/Mobvista
这里不作admob的评价,笔者家的游戏admob没投起来,成本高。重磅推荐,InMobi/Glispa/Mobvista三家联盟流量平台。量级大,成本可控,用户质量高。这三个平台都属于联盟流量商,集合了很多大中小app的流量。
InMobi有一套自有的cbp竞价模式,按照cpa出价进行优化,CBP=CVR*CPA出价,cvr指点击到激活的转化率。广告主出一个可接受cpa价格,系统根据回传回来的激活数据计算产生的点击到激活的转化率。Cpa出价固定式,转化率越高越容易抢到量,因此InMobi的投放需要随时关注点击到激活的转化率情况。一周需要更新3-5套素材。
Glispa和Mobvista是属于按照固定价格采买,平台收到下单需求后,将需求发布给下线的联盟渠道商。因此价格是固定不变的,只需要广告主根据流量情况,和回收情况,决定采买价格提高还是减少,以及及时反馈数据给平台,便于下线渠道优化。
联盟流量,不同的产品投出来的结果差异很大,建议是都可以做尝试,选择合适自己产品的平台推广。
六、海外视频渠道Vungle/unity
两个平台的流量都来源于,一些单击或者网游的插屏广告,以视频广告为主。有量,但是用户质量见仁见智。
也是后台按照激活出价,系统会根据分配的展示到最后激活的转化率+激活出价两个参考因素,决定流量的分配。如果是转化率低,可能被分配到的就是一些平台的低质用户流量,付费情况会糟糕。因此也是需要随时关注转化率,提高广告计划竞争力。
建议也是可以做尝试投放,根据自己产品投放的结果,决定是否继续投放。
七、电商抢量特殊时期
最近双十一,电商行业抢走了大部分量。笔者投放的平台中,今日头条流量波动比较大,账户流量明显跟大盘的流量。广点通流量依然坚挺。
小清新分割线以上。文章观点基于笔者亲身的投放经验,不具普遍适用性。如果有不同看法,欢迎评论区留言探讨。
投放 信息流广告可咨询 青瓜传媒资深运营QQ: 进行开户及深度合作!
青瓜传媒(/portal.php)国内领先的移动产品营销推广金牌服务商,公众号:运营大叔(yunyingdashu)、青瓜传媒(iqinggua),青瓜传媒专注于移动互联网广告投放,针对苹果安卓应用市场具有深入研究,为企业伙伴获取精准用户为主要目标。
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
全球移动推广干货大全,分享推广技巧经验大全!
全球渠道资源干货整合平台!
今日搜狐热点君,已阅读到文档的结尾了呢~~
广点通联盟开发者注册流程说明. 广点通移动 .... 感谢您选择加入广点通移动联盟,我们将为您的应用带来丰厚收入,本文档将帮助您完成广点通移动联盟. 的注册、 ...
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
广点通移动联盟开发者注册及接入流程说明V1.1
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口应用统计分析
注册并开始
用户行为分析
电商业务分析
游戏运营分析
注册并开始
服务器接口
移动广告监测
注册并开始
平台测试指南
广告网络使用文档
智能数据服务商城
计费与统计
App Analytics
Register and Create an Application
Download SDK
Integration
Fast Integration
Advanced Functions
注册并开始
获取SDK及UI模板
MarketingCloud
Brand Growth
移动观象台
ReportRoot
行业白皮书
关注微信公众号Cocos2d-x 3.X, IOS版添加广点通广告平台
苹果自己的广告平台iAD在中国不好使,获取不到广告,所以必须搞个本土广告平台。首先想到的是广点通。可是广点通官方文档里没有针对Cocos2d-x的版本,所以只好自己摸索。在添加过程中确实遇到了不少问题,在这里将解决方法整理一下,希望能帮助到那些还处于摸索中的朋友们。
本文所用Cocos2d-x为3.8.1版,Xcode为7.1版,广点通SDK为IOS 4.0版。(插播广告:如需添加安卓版广告请戳)
本文针对的是广告条的集成,应不少网友的需求已经另写了一篇插屏广告的集成,如有需要请戳。
准备工作:
1)进入广点通官网,注册账号。注册时需要上传身份证正反面照片(好像还需要手持身份证照片)以及银行账户。然后等待审核。广点通审核时间略长,大概要一个礼拜。
2)审核通过后就可以创建应用和广告位,并得到应用和广告位ID。这两个ID会被添加到我们的程序当中。
3)下载广点通IOS版SDK。广点通的SDK文件夹里有示例代码和帮助文档Guide 4.0.pdf。可以打开看一看(可以结合本文一起阅读),但是没有针对Cocos2d-x的。
开干正事:
1)新建HelloWorld项目。在搞懂如何添加之前,建议不要直接在自己的工程里面添加,最好新建一个HelloWorld项目用于试验。新建IOS版的HelloWorld项目相对简单。配置好环境变量后,只需一行命令即可完成。这个可以参考Cocos2d-x官方文档。
2)添加广点通SDK。打开下载好的广点通SDK文件夹,将其中libs里面的所有文件都拖入Xcode的HelloWorld项目中(以group形式加入,并注意libGDTMobSDK.a得放在项目根目录下,如果放在Classes下面链接时会找不到)。
3)添加相应Frameworks。进入Xcode项目的TARGETS部分,选择HelloWorld-mobile,进入Build Phases下的Link Binary With Libraries。往里面添加以下Frameworks:
- (void)bannerViewFailToReceived:(NSError
6)新建一个C++类,命名为AdBannerC,用来生成广告。注意我们要在Cocos2d-x的场景里生成广告,而Cocos2d-x场景又都是C++代码实现的(主要是因为Cocos2d-x都是以.cpp文件存在,它不支持对Objective C指令的编译),所以必须新建C++类,而非Objective C类。完整代码如下:
AdBannerC.h
#ifndef AdBannerC_h
#define AdBannerC_h
//要被cpp包含,所以不能有任何Objective C指令, 也就是说这里即不能#import GDTMobBannerView.h,
//也不能用@class GDTMobBannerView. 只能通过一个结构体来间接的调用GDTMobBannerView
struct AdBannerI
class AdBannerC
AdBannerC();
~AdBannerC();
AdBannerImpl*
AdBannerC.mm
#include &AdBannerC.h&
#include &RootViewController.h&
struct AdBannerImpl
GDTMobBannerView * _bannerV
AdBannerC::AdBannerC()
impl = new AdBannerImpl();
impl-&_bannerView=[[GDTMobBannerView alloc] initWithFrame:CGRectMake(0, 0,
GDTMOB_AD_SUGGEST_SIZE_320x50.width,
GDTMOB_AD_SUGGEST_SIZE_320x50.height)
appkey:@&&
placementId:@&4943610&];
//调用RooViewController对象
auto rootViewController = (RootViewController*) [[[UIApplication sharedApplication] keyWindow] rootViewController];
impl-&_bannerView.delegate = rootViewC // 设置Delegate
impl-&_bannerView.currentViewController = rootViewC //设置当前的ViewController
impl-&_bannerView.interval = 30; //【可选】设置刷新频率;默认30秒
impl-&_bannerView.isGpsOn = NO; //【可选】开启GPS定位;默认关闭
impl-&_bannerView.showCloseBtn = YES; //【可选】展示关闭按钮;默认显示
impl-&_bannerView.isAnimationOn = YES; //【可选】开启banner轮播和展现时的动画效果;默认开启
[rootViewController.view addSubview:impl-&_bannerView]; //添加到当前的view中
[impl-&_bannerView loadAdAndShow]; //加载广告并展示
AdBannerC::~AdBannerC()
impl-&_bannerView.delegate =
impl-&_bannerView.currentViewController =
[impl-&_bannerView release];
[impl-&_bannerView removeFromSuperview];
} 注意AdBannerC类的实现部分的文件名后缀是.mm。该文件支持对C++和Objective C两种语言的混合编译。代码本身并不复杂,几乎一目了然。就是创建一个BannerView对象(将其中应用和广告位ID换成我们自己的),然后把它加入到RootViewController的视图下,并设置几个参数。
7)这样就可以愉快的往HelloWorld场景中添加AdBannerC对象,获取广告了。完整代码如下所示:
HelloWorldScene.h
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include &cocos2d.h&
#include &AdBannerC.h&
class HelloWorld : public cocos2d::Layer
static cocos2d::Scene* createScene();
virtual bool init();
// a selector callback
void menuCloseCallback(cocos2d::Ref* pSender);
// implement the &static create()& method manually
CREATE_FUNC(HelloWorld);
//广告条对象
AdBannerC *adB
#endif // __HELLOWORLD_SCENE_H__
HelloWorldScene.cpp
#include &HelloWorldScene.h&
//#include &AdBannerC.h&
USING_NS_CC;
Scene* HelloWorld::createScene()
// 'scene' is an autorelease object
auto scene = Scene::create();
// 'layer' is an autorelease object
auto layer = HelloWorld::create();
// add layer as a child to scene
scene-&addChild(layer);
// return the scene
// on &init& you need to initialize your instance
bool HelloWorld::init()
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
Size visibleSize = Director::getInstance()-&getVisibleSize();
Vec2 origin = Director::getInstance()-&getVisibleOrigin();
/////////////////////////////
// 2. add a menu item with &X& image, which is clicked to quit the program
you may modify it.
// add a &close& icon to exit the progress. it's an autorelease object
auto closeItem = MenuItemImage::create(
&CloseNormal.png&,
&CloseSelected.png&,
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
closeItem-&setPosition(Vec2(origin.x + visibleSize.width - closeItem-&getContentSize().width/2 ,
origin.y + closeItem-&getContentSize().height/2));
// create menu, it's an autorelease object
auto menu = Menu::create(closeItem, NULL);
menu-&setPosition(Vec2::ZERO);
this-&addChild(menu, 1);
/////////////////////////////
// 3. add your codes below...
// add a label shows &Hello World&
// create and initialize a label
auto label = Label::createWithTTF(&Hello World&, &fonts/Marker Felt.ttf&, 24);
// position the label on the center of the screen
label-&setPosition(Vec2(origin.x + visibleSize.width/2,
origin.y + visibleSize.height - label-&getContentSize().height));
// add the label as a child to this layer
this-&addChild(label, 1);
// add &HelloWorld& splash screen&
auto sprite = Sprite::create(&HelloWorld.png&);
// position the sprite on the center of the screen
sprite-&setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
// add the sprite as a child to this layer
this-&addChild(sprite, 0);
void HelloWorld::menuCloseCallback(Ref* pSender)
Director::getInstance()-&end();
//#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
//加广点通广告
adBanner = new AdBannerC();
我们在这里把新建广告条函数放在了原先的关闭按钮回调函数里,这样只要按一下按钮就会弹出广告条。
8)编译运行。这时问题就来了。首先会提示出现7个错误:
&_MPMoviePlayerPlaybackStateDidChangeNotification&, referenced from:
-[UIVideoViewWrapperIos dealloc] in libcocos2d iOS.a(UIVideoPlayer-ios.o)
-[UIVideoViewWrapperIos setURL::] in libcocos2d iOS.a(UIVideoPlayer-ios.o)
&_MPMoviePlayerPlaybackDidFinishNotification&, referenced from:
-[UIVideoViewWrapperIos dealloc] in libcocos2d iOS.a(UIVideoPlayer-ios.o)
-[UIVideoViewWrapperIos setURL::] in libcocos2d iOS.a(UIVideoPlayer-ios.o)
&_OBJC_CLASS_$_GCController&, referenced from:
objc-class-ref in libcocos2d iOS.a(CCController-iOS.o)
(maybe you meant: _OBJC_CLASS_$_GCControllerConnectionEventHandler)
&_OBJC_CLASS_$_MPMoviePlayerController&, referenced from:
objc-class-ref in libcocos2d iOS.a(UIVideoPlayer-ios.o)
&_GCControllerDidDisconnectNotification&, referenced from:
-[GCControllerConnectionEventHandler observerConnection:disconnection:] in libcocos2d iOS.a(CCController-iOS.o)
&_GCControllerDidConnectNotification&, referenced from:
-[GCControllerConnectionEventHandler observerConnection:disconnection:] in libcocos2d iOS.a(CCController-iOS.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)这时如果把第四步中设置的Other Linker Flags中的-ObjC去掉的话,便可以编译运行成功,但是当我们按下弹出广告条按钮时就会报错(包括unrecognized selector sent to instance 0x)。因此这个方法行不通,还得添加回去。那么问题在哪呢?决解这个问题的答案非常简单,就是添加两个Frameworks:GameController.framework和MediaPlayer.framework。但是要理解为什么就需要科普一下连接器的工作原理了:
连接器工作原理
在C语言里面,函数的调用和定义可以处于两个不同的文件里。比如main.c文件里调用了foo()函数(在调用之前必须声明该函数,但不必定义该函数),但是foo()的定义在B.c里面。那么编译器会在生成的目标文件main.o里给foo()函数做一个待定标记,告诉连接器该函数定义在别处。这样连接器就会找到定义该函数的目标文件B.o,并把它加进来。Unix的静态库其实就是一堆目标文件。在一般情况下,如果一个函数被声明了,但是没有被调用,那么它是没有待定标记的,连接器不会把静态库中定义该函数的目标文件加载进来,以减小可执行文件的大小。
对于Objective C,由于它的动态特性,情况略有不同。只有当某个方法(对应于C的函数)在运行时被调用了,计算机才知道它的实现(对应于C的函数定义)是什么(比如父类和子类对同一方法有不同实现。如果采用动态绑定,那么某个id对象即可以是父类也可以是子类,到底是什么只有在运行时才知道)。所以Objective C不对方法做待定标记,即便做了在连接时也不知道去哪里找实现。Objective C只对类做待定标记,因为类的实现是确定的。另一方面,Objective
C里还有一个独特的存在叫做分类(category),它其实就是一堆方法的集合,是某个类的扩展。所以,如果某个文件调用了某个分类里面的方法,是不会产生这个分类的待定标记的,只会产生这个类的待定标记。所以默认情况下连接器不会把(静态库中)定义该分类的目标文件加进来。这样就会在运行时报错,找不到实现(unrecognized selector)。解决方法就是“宁可错杀,不可放过”。添加-ObjC标志之后,连接器就把静态库中所有相关的分类实现都加进来,无论它们有没有被调用,只要头文件被包含过(也就是只要被声明过)就都加进来。
理解了这个原理之后就知道为啥去掉-ObjC后会在运行时出错,因为找不到某个实现了。但是加了-ObjC这个标志之后呢,连接器会将静态库中所有相关类和分类的实现都加进来,恰巧Cocos2d-x的文件里包含了两个静态库头文件GameController/GameController.h和MediaPlayer/MediaPlayer.h,连接器根据-ObjC必须加载它们对应的目标文件,但是又找不到,所以只好报错。解决办法就是添加这两个目标文件所在的Frameworks。参考资料在。
加了这两个Frameworks之后,果然可以编译运行了。但是在点击弹出广告按钮时还是报错:
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
将这段报错信息拷贝到百度搜索栏里面,很快就能找到解决方法(参考)。原来是IOS9新增了App
Transport Security特性,默认使用HTTPS协议,如果在IOS9下直接进行HTTP请求就会报错。解决方法就是关闭这个特性: 进入项目TARGETS下的HelloWorld-mobile,找到info下的Cumstom ios Target Properties, 添加App Transport Security Settings,将其下面的Allow&Arbitrary Loads设置为Yes。如下图所示:
现在我们再来运行试试,发现没有报错了。但是在模拟器里一直获取不到广告。如果改用真机运行可以很容易获取到。运行结果如下图所示:
从上图可见我在新建HelloWorld项目中已经把横屏调成了竖屏。这只是个人喜好而已。在用真机测试时或者打包上传时可能还会遇到一个错误就是:-fembed-bitcode is not supported on versions of iOS prior to 6.0。这个问题是因为Xcode默认支持bitcode(程序的一种中间代码,它可以让苹果在后期对我们的二进制码进行优化),但是有些第三方库并不支持bitcode,所以解决办法就是关闭它:找到TARGETS-&Build
Settings-&Build Options-&Enable Bitcode,将其设置为NO。参考在。
水平有限,如有不妥,欢迎指正!
参考资料:
1)广点通官方文档Guide 4.0.pdf
2) &广大网友
看过本文的人也看了:
我要留言技术领域:
取消收藏确定要取消收藏吗?
删除图谱提示你保存在该图谱下的知识内容也会被删除,建议你先将内容移到其他图谱中。你确定要删除知识图谱及其内容吗?
删除节点提示无法删除该知识节点,因该节点下仍保存有相关知识内容!
删除节点提示你确定要删除该知识节点吗?}

我要回帖

更多关于 广点通sdk接入 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信