NewsAdsSDK_iOS接入文档
版本 | 发布时间 | 版本内容 | 人员 |
---|---|---|---|
v1.1 | 2019-12-11 | 新增穿山甲个性化模板广告,自渲染和个性化模板切换参数kBU_NativeAd | |
v1.0 | 2019-12-05 | 新闻信息流广告SDK,支持广点通、穿山甲、百度 |
SDK地址,阿里云code,切换至iOS分支,无权限请联系管理员。
注意事项:
1.广告类型关键字符识别:广点通(GDT)、穿山甲(BU)、百度(Baidu)。
2.广点通为模板广告,百度为原生自渲染,穿山甲(头条)有自渲染和模板两种。
3.目前,所有广告均含小图(左文右小图)、大图(上文下大图)、三图(上文下三小图),只有穿山甲有视频广告。
4.头条广告分为自渲染和个性化模板两种,2019.11.28穿山甲联盟中已关闭自渲染申请通道,只能使用个性化模板。请使用kBU_NativeAd
切换广告,可删除多余部分代码。
5.百度广告产品管理后台需要配置好返回广告条数>1,效果为佳。
6.Demo中图片宽高比如不需要自定义,请忽略本条
- 百度广告默认小图和三图图片宽高比为3:2,大图和视频宽高比为16:9,
可修改宏定义NewsBaiduSmallPic_Scale
和NewsBaiduBigPic_Scale
- 穿山甲自渲染广告宽高比暂未抽取,请自行去代码中修改。
- 穿山甲模板广告和广点通模板广告高度自适应,可在联盟后台修改样式。
7.百度默认请求https广告,若期望请求http的广告,直接调用如下接口:
[BaiduMobAdSetting sharedInstance].supportHttps = NO;
集成步骤:
可全局搜索Demo中代码标记 NewsAd_Code
,查看嵌入代码
1.pod集成广告SDK
# 广点通
pod 'GDTMobSDK'
# 谷歌广告(暂不支持)
# pod 'Google-Mobile-Ads-SDK'
# 百度
pod 'BaiduMobAdSDK'
# 头条
pod 'Bytedance-UnionAD'
2.配置info.plist
定位权限(百度及广点通广告需要)
NSLocationAlwaysAndWhenInUseUsageDescription
,
NSLocationWhenInUseUsageDescription
ADMob配置
key:GADApplicationIdentifier
value:ADMob应用ID,对应值为宏定义中kAdmob_AppKey
3.拖入Demo中文件夹
NewsAdsSDK
4.可引入广告管理头文件至pch文件,也可按需局部引入
#import "NewsAds.h"
5.配置所有广告key
- 替换
NewsAds.h
中配置广告的key值,根据对应的注释正确填写。 - 应用的BundleIdentifier对应,广告SDK才能拉取数据成功。
6.初始化广告池
- 在
AppDelegate.m
中初始化广告池,可在didFinishLaunchingWithOptions
方法中调用
[self registerNewsAdsPool];
- 根据需要修改
registerNewsAdsPool
方法中使用的key值,可以直接使用NewsAds.h
中宏定义key,也可使用后台接口配置的key,如下:
// 百度小图
NewsAdModuleBaidu *smallBaidu = [[NewsAdModuleBaidu alloc] initWithAppId:kBaidu_AppKey adId:[AllBaseDataManager shareManager].baiduSmallPic];
7.升级新闻接口
- 新闻列表接口中要增加广告版本参数
&adversion=1.1
,否则无法通过广告管理后台控制广告在新闻列表中显示的位置。
8.配置新闻列表数据模型
目前,已通过NSObject+NewsModel.h
分类动态为新闻列表数据模型添加adIndex
和PositionType
属性。具体说明如下:
-
adIndex
:记录广告所属位置。 -
PositionType
:有些新闻数据中新增属性,用于区分广告所属位置(启动页、列表页、推荐页、热词、详情页),如果接口中有此属性,需要注意区分。 - 注意
cellType
属性的使用,为自定义属性,用于记录当前模型要显示的UI类型,请求到接口数据后要对此属性赋值,具体实现查看demo中getNewsDetailInfo
的实现,枚举值如下:
typedef NS_ENUM(NSInteger, InfoNewsCellType){
InfoNewsZeroImgCellTypeDef, //无图(默认)
InfoNewsOneImgCellType, //一张图
InfoNewsThreeImgCellType, //三张图
InfoNewsVideoCellType, //video
InfoNewsADCellType //广告
};
9.配置新闻列表Tableview
- 自定义Tableview增加属性
adList
,用于广告存储 。
@property (nonatomic, strong) NSMutableDictionary *adList;
- 懒加载初始化:
-(NSMutableDictionary *)adList{
if (!_adList) {
_adList = [NSMutableDictionary dictionary];
}
return _adList;
}
10.管理新闻数据中广告
- 自定义Tableview中实现
bindADToModels
方法,并注意参考demo中调用时机。遍历当前请求中所有新闻数据,IsAD为1,并满足PositionType
不存在,或存在并且为列表页类型ZJAdvertisementTypeList
时从广告池中提取广告。
11.接管UITableView代理
- 查看
UITableView+NewsAd.h
中方法,并参照demo在对应的方法中实现注册广告cell,计算cell高,展示cell度,处理cell中广告曝光事件等。
12.点击模板广告叉功能实现
- 接收点击模板广告叉通知
kNewsAdDislikeNotification
,实现删除数据源中对应数据,并更新列表。参考demo实现。
常见问题:
1.点击广告后如不能展示?
- 需要修改传入广告SDK的控制器,具体方法参考
willReturnAD
实现
2.头条信息流个性化模板点击叉后无效?
- 如不能显示头条SDK自带原因列表弹窗,则传入的控制器不正确,需要在
willReturnAD
中选择合适控制器。 - 点击后显示弹窗,但点击弹窗选项后无反应,需要接受通知
kNewsAdDislikeNotification
,并参照demo中处理方式移除数据源并更新列表。