iOS广告SDK:
hippo-sdk-frameworks-1.7.0.zip
【可选】广点通的SDK:
hippo-ads-networks-gdt-1.1.zip
更新记录:
iOS版本 | 作者 | 日期 | 描述 |
---|---|---|---|
v1.2.0 | junewong | 2019-05-29 | 支持iOS平台,提供激励视频和banner广告API。 |
v1.2.2 | junewong | 2019-05-30 | 1、iOS平台支持点击回调; 2、iOS平台支持填充和展示错误回调; 3、showVideoAd的接口方法更换为showRewardVideoAd 4、修正一些小问题; |
v1.2.3 | junewong | 2019-06-06 | 1、调整和新增部分打点事件 |
v1.2.4 | junewong | 2019-06-06 | 1、将第三方广告sdk从1.9.9.2升级到2.0.1.1版本; |
v1.2.5 | junewong | 2019-06-11 | 1、优化isLoaded方法; |
v1.2.8 | junewong | 2019-06-28 | 1、支持配置统计功能的channel参数; |
v1.2.9 | junewong | 2019-07-01 | 1、将第三方广告sdk升级到2.1.0.1版本; 2、banner广告支持点击关闭; |
v1.3.0 | junewong | 2019-07-18 | 1、升级第三方广告sdk到2.1.0.2 |
v1.4.0 | junewong | 2019-07-29 | 1、iOS支持服务端下发配置; 2、banner对iPad做适配; |
v1.4.4 | junewong | 2019-08-27 | 1、升级第三方广告sdk到2.4.0.0; |
v1.4.5 | junewong | 2019-09-18 | 1、升级第三方广告sdk到2.4.6.0; |
v1.4.6 | junewong | 2019-09-23 | 1、清除带有过时的UIWebView类的类库; |
v1.5.1 | junewong | 2019-10-28 | 1、新增支持广点通广告平台(平台sdk需要另外导入); 2、升级第三方广告sdk到2.4.6.7; |
v1.5.2 | junewong | 2019-10-31 | 1、iOS调整banner的样式; |
v1.5.3 | junewong | 2019-12-10 | 1、iOS增加完整流程用户反馈功能; |
v1.5.4 | junewong | 2019-12-11 | 1、iOS升级第三方广告sdk到2.5.1.5(需要添加增加Accelerate.framework) |
v1.5.5 | junewong | 2019-12-12 | 1、更改激励和全屏视频广告为默认使用个性化模板展现; |
v1.5.6 | junewong | 2019-12-19 | 1、增加部分统计信息; |
v1.5.7 | junewong | 2020-01-03 | 1、iOS升级第三方广告sdk到2.7.5.2; 2、修改isLoad的判定规则; |
v1.5.8 | junewong | 2020-01-16 | 1、iOS修正渲染失败后重试的bug; |
v1.5.9 | junewong | 2020-02-06 | 1、iOS增加开屏广告类型; 注意:iOS的framework目录结构有调整,升级建议重新导入; |
v1.6.0 | junewong | 2020-02-10 | 1、iOS兼容使用19年12月5号申请的旧类型广告id; |
v1.6.2 | junewong | 2020-02-16 | 1、iOS增加可切换强制使用本地配置的特性; |
v1.6.4 | junewong | 2020-03-10 | 1、iOS增加信息流广告类型 |
v1.6.6 | junewong | 2020-06-03 | 1、iOS增加统计平台开关以及设置统计计划特性; 2、iOS初始化流程的优化; |
v1.6.9 | junewong | 2020-08-17 | 1、iOS升级穿山甲广告sdk到3.1.0.9; |
v1.7.0 | junewong | 2020-08-25 | 1、优化iOS的瀑布流算法,支持自定义并行数; |
一、概述
本 SDK 适用于对接中国区内的广告变现平台,通过简单流程即可同时集成高价值广告平台、统计分析工具等,提升接入效率、减少维护成本。
二、准备工作
下载上方HippoSDK的zip压缩包
与河马运营人员获取如下信息:
- 配置文件hippo-ads-config.json,该json文件包含了广告相关的各种信息,请不要随便修改;
- 各个聚合广告位的id,代码调用时会用到;
- 如果用到抖音分享功能的话,需要抖音的平台AppId(分享功能时需要填schema);
三、接入步骤
- 将hippo-sdk-frameworks-xxx.zip解压,将其中所有framework导入;
其中如果不需要录屏屏幕功能,lib-recorder目录可以不用引入,其他库为必选。
注意导入方式必须是create groups:
- 导入SDK配置文件
将hippo-ads-config.json文件导入到工程的根目录中(json文件名称请不要随意修改):
hippo-ads-config.json
- iOS工程运行环境配置
支持环境:
- 支持系统 iOS 8.X 及以上;
- SDK编译环境 Xcode 9.4, Base SDK 11.1;
- 支持架构:arm64以上
请检查以下工程配置:
a)网络权限配置
存在 SDK API 已经全部支持HTTPS,但是有时广告主素材存在非HTTPS情况。解决办法:
工程plist文件设置,点击右边的information Property List后边的 “+” 展开
添加 App Transport Security Settings,先点击左侧展开箭头,再点右侧加号,Allow Arbitrary Loads 选项自动加入,修改值为 YES。
b)检查是否存在以下库,如果没有请添加:
工程需要在TARGETS -> Build Phases中找到Link Binary With Libraries,点击“+”,添加下列中缺漏的依赖库:
- StoreKit.framework
- MobileCoreServices.framework
- WebKit.framework
- MediaPlayer.framework
- CoreMedia.framework
- AVFoundation.framework
- CoreLocation.framework
- CoreTelephony.framework
- SystemConfiguration.framework
- AdSupport.framework
- CoreMotion.framework
- libresolv.9.tbd
- libc++.tbd
- libz.tbd
- Accelerate.framework
- libxml2.2.tbd
c)添加“Other Linker Flags”参数:
Build Settings中Other Linker Flags 增加参数-ObjC,SDK同时支持-all_load。
- 分享功能相关的配置(可选,不需要分享功能请忽略)
a)在Xcode中,选择你的⼯工程设置项,选中“TARGETS”⼀一栏,在“info”标签栏 的“LSApplicationQueriesSchemes“添加“douyinsharesdk”(分享填这个)和“douyinopensdk”(授权 登录填这个)。如需使⽤用分享功能,还需要填相册访问权限,在“info”标签栏中添加“Privacy - Photo Library Usage Description”。
b)在Xcode中,选择你的TARGETS->Info中最下⾯面的URL Types,在⾥⾯面填⼊抖音平台的AppID,identitier填clientkeydouyin:
四、SDK使用说明:
1、初始化SDK
在应用启动阶段做sdk的初始化,SDK会自动找寻json配置文件,且自动执行各种初始化操作。
请多留意日志的初始化成功或者失败的提示。
// AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[HippoAdSDK initSDK];
return YES;
}
2、广告功能的使用
a) 广告请求
使用聚合广告位id,请求对应的广告类型。
注意只需要请求一次即可,以后每当广告被展示或者填充错误,就会自动开始请求填充下一个广告。
// 激励视频广告的聚合广告位id
static NSString* const kRewardedVideoAdUnitId = @"bfe4445553d1ff53dea7354c516c844e";
// 对指定广告位开始填充广告(一个广告位只需要调用一次)
[[HippoAdSDK platformWithAdUnitId:kRewardedVideoAdUnitId] loadRewardedVideoAd];
b)广告展现
展现激励视频广告,在需要触发广告的时候调用:
// 展示指定广告位的激励视频广告
[[HippoAdSDK platformWithAdUnitId:kRewardedVideoAdUnitId] showRewardedVideoAd];
c) 判断广告填充
判断指定的广告位是否已经填充
// 判断广告是否已填充
if ( [[HippoAdSDK platformWithAdUnitId:kRewardedVideoAdUnitId] isLoaded] ) {
// 确认广告已填充之后的逻辑
}
c)设置好广告回调
在需要展现各个广告的页面,准备好回调方法:
// ViewController.m
- (void) viewDidLoad {
[super viewDidLoad];
if ( [HippoAdSDK isReady] ) {
// info是任意自定义的展现日志方法,下同
[self info:@"SDK is ready."];
// 实现HPAdPlatformDelegate协议的回调对象
[[HippoAdSDK platformWithAdUnitId:kRewardedVideoAdUnitId] setDelegate:self];
} else {
[self info:@"SDK init fail."];
}
}
实现HPAdPlatformDelegate的回调方法
其中adUnitId是聚合广告位id,adType在HPAdConstant.h中“广告类型”定义。
#pragma mark - AD delegate
// 广告已填充
- (void)adLoadedWithAdUnitId:(NSString*)adUnitId adType:(NSString*)adType
{
[self info:[NSString stringWithFormat:@"%@ is loaded, id:%@", adType, adUnitId]];
}
// 广告已关闭
- (void)adClosedWithAdUnitId:(NSString*)adUnitId adType:(NSString*)adType
{
[self info:[NSString stringWithFormat:@"%@ is closed, id:%@", adType, adUnitId]];
}
// 广告发放奖励
- (void)adRewardedWithAdUnitId:(NSString*)adUnitId adType:(NSString*)adType
{
[self info:[NSString stringWithFormat:@"%@ video is rewared, id:%@", adType, adUnitId]];
}
// 广告被点击
- (void)adClickedWithAdUnitId:(NSString*)adUnitId adType:(NSString*)adType
{
[self info:[NSString stringWithFormat:@"%@ video is clicked, id:%@", adType, adUnitId]];
}
// 广告各个环节的错误回调
- (void)adErrorWithAdUnitId:(NSString*)adUnitId adType:(NSString*)adType errorCode:(int)errorCode errorMessage:(NSString*)errorMessage
{
[self info:[NSString stringWithFormat:@"%@ is error, id:%@, code:%d, message:%@", adType, adUnitId, errorCode, errorMessage]];
}
3、录制和分享功能的使用
录制功能会录制游戏界面,目前在iOS下只支持基于GLKView绘制的内容。
a)开始录制和结束录制
注意同一时间只会录制一个文件。
// 开始录制
[[HippoRecorder sharedInstance] startRecord];
// 结束录制
[[HippoRecorder sharedInstance] stopRecord];
b)录制的回调方法
设置Delegate:
[[HippoRecorder sharedInstance] setDelegate:self];
实现HPRecorderDelegate协议:
#pragma mark - recorder delegate
// 开始录制
- (void)recorder:(HippoRecorder*)recorder startRecording:(BOOL)success
{
// ...
}
// 结束录制
// HPRecordFile是录制的文件信息,包括唯一id和文件路径。
// 注意:此时录制的文件只是临时存放,还未添加到系统的相册中,所以不会有相册的localIdentifier。
- (void)recorder:(HippoRecorder*)recorder stopRecording:(HPRecordFile*)recordFile
{
// ...
}
// 录制错误
- (void)recorder:(HippoRecorder*)recorder recordedError:(NSError*)error
{
// ...
}
4、分享功能
a)录制完直接分享到抖音
// 判断是否支持抖音并且得到平台的授权
if ( ! [[HippoShareManager sharedInstance] isSupported:HPSharePlatformDouyin] ) {
[self info:@"Warn: Unsupported for Douyin share."];
return;
}
// 将录制好的文件保存进相册(为了得到分享需要的相册文件id)
[[HippoRecorder sharedInstance] saveAndFetchRecordFile:^(HPRecordFile * _Nonnull recordFile) {
// 分享内容
HPShareContent *shareContent = [[HPShareContent alloc] initWithLocalId:recordFile.localIdentifier];
// 指定分享到抖音平台
// 注意返回值success的含义是代表能正常跳转到抖音,
// 不代表分享成功,分享是否成功请在回调中取得
BOOL success = [[HippoShareManager sharedInstance] share:shareContent platform:HPSharePlatformDouyin];
if ( success ) {
[self info:@"share success."];
} else {
[self info:@"share fail."];
}
} error:^(NSError * _Nonnull error) {
[self info:[NSString stringWithFormat:@"save record file error. %@", error.localizedDescription ]];
}];
5. 用户反馈功能
a)展现用户意见反馈的对话框
// 展现意见反馈的对话框
[[HippoFeedbackManager sharedInstance] showRatingsOrFeedbackView:self];
b)自定义对话框内容的文案
通过修改属性以自定义对应的文案内容:
HippoFeedbackManager *feedbackManager = [HippoFeedbackManager sharedInstance];
// 询问是否喜欢游戏对话框
feedbackManager.alertViewTitle = @"意见反馈";
feedbackManager.alertViewMessageText = @"你喜欢我们的游戏吗?";
feedbackManager.alertViewOKActionText = @"喜欢";
feedbackManager.alertViewCancelActionText = @"不喜欢";
// 填写反馈内容对话框
feedbackManager.feedbackViewTitle = @"意见反馈";
feedbackManager.feedbackViewMessageText = @"给游戏提意见帮助我们做得更好";
feedbackManager.feedbackViewPlacehodler = @"填写反馈内容";
feedbackManager.feedbackViewOKActionText = @"提交";
feedbackManager.feedbackViewCancelActionText = @"取消";