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 适用于对接中国区内的广告变现平台,通过简单流程即可同时集成高价值广告平台、统计分析工具等,提升接入效率、减少维护成本。

二、准备工作

  1. 下载上方HippoSDK的zip压缩包

  2. 与河马运营人员获取如下信息:

  • 配置文件hippo-ads-config.json,该json文件包含了广告相关的各种信息,请不要随便修改;
  • 各个聚合广告位的id,代码调用时会用到;
  • 如果用到抖音分享功能的话,需要抖音的平台AppId(分享功能时需要填schema);

三、接入步骤

  1. 将hippo-sdk-frameworks-xxx.zip解压,将其中所有framework导入;

其中如果不需要录屏屏幕功能,lib-recorder目录可以不用引入,其他库为必选。

注意导入方式必须是create groups:
image.png

  1. 导入SDK配置文件

将hippo-ads-config.json文件导入到工程的根目录中(json文件名称请不要随意修改):

hippo-ads-config.json

  1. 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。
bu_2.png

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。

bu_3.png

  1. 分享功能相关的配置(可选,不需要分享功能请忽略)

a)在Xcode中,选择你的⼯工程设置项,选中“TARGETS”⼀一栏,在“info”标签栏 的“LSApplicationQueriesSchemes“添加“douyinsharesdk”(分享填这个)和“douyinopensdk”(授权 登录填这个)。如需使⽤用分享功能,还需要填相册访问权限,在“info”标签栏中添加“Privacy - Photo Library Usage Description”。

image.png

b)在Xcode中,选择你的TARGETS->Info中最下⾯面的URL Types,在⾥⾯面填⼊抖音平台的AppID,identitier填clientkeydouyin:

image.png

四、SDK使用说明:

1、初始化SDK

在应用启动阶段做sdk的初始化,SDK会自动找寻json配置文件,且自动执行各种初始化操作。
请多留意日志的初始化成功或者失败的提示。

  1. // AppDelegate.m
  2. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  3. [HippoAdSDK initSDK];
  4. return YES;
  5. }

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 = @"取消";