# Bison教你1分钟集成百度移动SSP启动广告

语言：zh-CN
原文：[Bison教你1分钟集成百度移动SSP启动广告](<https://allluckly.cn/sdk/baidu01>)
中文：[中文 HTML](<https://allluckly.cn/sdk/baidu01>)
English: [English HTML](<https://allluckly.cn/en/journal/2015-12-26-integrating-a-baidu-mobile-ssp-launch-ad-in-one-minute/>)
发布于: 2015-12-26T00:00:00+08:00
内容更新于: 2015-12-26T00:00:00+08:00
署名：[Bison](<https://allluckly.cn/about/>)

记录百度移动 SSP 开屏广告的历史接入过程，从平台注册和 SDK 导入，到系统依赖、编译参数与启动代理回调，展示在应用启动阶段加载广告的主要步骤。

原文署名 Bison，保留原发布时的内容。

**阅读前** 这是 2015–2017 年间的技术记录，本次整理未重新运行验证示例。原文发表于 2015 年，包含 iOS 9 适配配置与当时的百度 SSP SDK。

> "让你的APP集成百度移动SSP启动广告,增加收入"

> Bison

自己的app最近要上架啦，免费的app，琢磨着怎么把那开发者99美元赚回来好呢？  
 感觉最简单的就是在自己的app里面增加广告来赚回，但因我是一个完美主义者，  
 不喜欢那种广告满天飞，玩着玩着，就跑出个插播广告来，影响用户体验度的同时，  
 也影响app的美观，这是我无法容忍的。进入俩难当中，随便找了下百度的移动SSP  
 百度SSP的样式有很多种，对于我来说，开屏广告是最适合的，一来不会影响用户的  
 体验度，二来也不会影响app的整体美观。于是就定下来这个方案  
 下面让我们来看看怎么集成

> 百度SSP官网[传送站](<http://mssp.baidu.com/home/developer.html>)

首先在百度SSP注册个账号,然后到应用管理里面新增一个移动应用，填好相关的资料  
 然后下载SDK,把下载的`ios_api`文件夹拉到我们自己的工程里面

## warning:iOS9适配说明:

> 1.在plist中,添加baidumobads到LSApplicationQueriesSchemes数组下. 注意:Xcode7.0 模拟器上会error:(null),真机上不会报错,这里错误可以忽略.

```css
    <key>LSApplicationQueriesSchemes</key> <array>
    <string>baidumobads</string>
    </array>
```

> 2.ENABLE\_BITCODE=YES. SDK已支持BITCODE,若不需要则直接设置为NO即可.

> 3.在plist中,在NSAppTransportSecurity下设置NSAllowsArbitraryLoads为true. 注: 在Xcode7.1请设置App Transport Security Settings下设置 Allow Arbitrary Loads 为true.

```css
    <key>NSAppTransportSecurity</key> 
    <dict>
    <key>NSAllowsArbitraryLoads</key> 
    <true/>
    </dict>
```

> 4.SDK用到的.dylib 库在Xcode7都变成了.tbd后缀, 导入相应名字的库即可.

## 然后添加`Frameworks`

`QuartzCore.framework`   
 `Security.framework`   
 `AdSupport.framework`  
 `StoreKit.framework`  
 `libz.dylib`  
 `AudioToolbox.framework`   
 `CoreMotion.framework`  
 `MediaPlayer.framework`  
 `AVFoundation.framework`  
 `MessageUI.framework`  
 `CoreLocation.framework`  
 `CoreTelephony.framework`  
 `SystemConfiguration.framework`  
 `CoreGraphics.framework`  
 `WebKit.framework`

## 再编译参数设置

> targets-\>BuildSettings-\>Other Linker Flags -\>添加 -ObjC -lstdc++

配置到此结束了，下面在此我们只讲下百度SSP的开屏广告

在`AppDelegate`中导入头文件  
 `#import "BaiduMobAdSplashDelegate.h"`  
 `#import "BaiduMobAdSplash.h"`  
 添加`BaiduMobAdSplashDelegate`代理

具体代码如下

.h文件

```css
@property (strong, nonatomic) BaiduMobAdSplash *splash;

@property (strong, nonatomic) UIView *customSplashView;
```

.m文件

```css
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    //百度广告
    [self BaiDuNew];

    return YES;
}

- (void)BaiDuNew{

    [self.window makeKeyAndVisible];
    BaiduMobAdSplash	*splash	=	[[BaiduMobAdSplash	alloc]	init];
    splash.delegate	= self;
    //把在mssp.baidu.com上创建后获得的代码位id写到这里
    splash.AdUnitTag = @"2365464";
    splash.canSplashClick	=	YES;
    [splash	loadAndDisplayUsingKeyWindow:self.window];
    self.splash	= splash;

    //可以在customSplashView上显示包含icon的自定义开屏
    self.customSplashView = [[UIView alloc]initWithFrame:self.window.frame];
    self.customSplashView.backgroundColor = [UIColor whiteColor];
    [self.window addSubview:self.customSplashView];
    [self.window bringSubviewToFront:self.customSplashView];


    //在baiduSplashContainer用做上展现百度广告的容器，注意尺寸必须大于200*200，并且baiduSplashContainer需要全部在window内，同时开机画面不建议旋转
    CGFloat width = self.window.frame.size.width;
    CGFloat height= self.window.frame.size.height;
    UIView * baiduSplashContainer = [[UIView alloc]initWithFrame:CGRectMake(0, 0, width, height-100)];
    [self.customSplashView addSubview:baiduSplashContainer];

    UIImageView *iconView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"icon.png"]];
    [iconView setFrame:CGRectMake(width/2-70-40, height-90, 80, 80)];
    [self.customSplashView addSubview:iconView];

    UIImageView *logoView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"ITBlog.png"]];
    [logoView setFrame:CGRectMake(CGRectGetMaxX(iconView.frame)+40, height-90, 130, 50)];
    [self.customSplashView addSubview:logoView];

    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(CGRectGetMinX(logoView.frame)-2, CGRectGetMaxY(logoView.frame), 130, 25)];
    label.font = [UIFont systemFontOfSize:13];
    label.textAlignment = NSTextAlignmentLeft;
    label.textColor = [UIColor lightGrayColor];
    label.text = @"自学iOS开发进阶首选";
    label.textAlignment = NSTextAlignmentCenter;
    [self.customSplashView addSubview:label];
    //在的baiduSplashContainer里展现百度广告
    [splash loadAndDisplayUsingContainerView:baiduSplashContainer];
}

- (NSString *)publisherId
{

    return @"ab17bd77";
}

/**
*  广告展示成功
*/
- (void)splashSuccessPresentScreen:(BaiduMobAdSplash *)splash
{
    NSLog(@"splashSuccessPresentScreen");
}

/**
*  广告展示失败
*/
- (void)splashlFailPresentScreen:(BaiduMobAdSplash *)splash withError:(BaiduMobFailReason) reason
{
    NSLog(@"splashlFailPresentScreen withError:%d",reason);
    //自定义开屏移除
    [self.customSplashView removeFromSuperview];
}

/**
*  广告展示结束
*/
- (void)splashDidDismissScreen:(BaiduMobAdSplash *)splash
{
    NSLog(@"splashDidDismissScreen");
    //自定义开屏移除
    [self.customSplashView removeFromSuperview];
}

/**
*  广告点击
*/
- (void)splashDidClicked:(BaiduMobAdSplash *)splash
{
    NSLog(@"splashDidClicked");
}
```

效果图如下

历史配图暂不可用，[保留原图地址](<https://github.com/AllLuckly/AllLuckly.github.io/blob/master/images/blog/baidu.gif?raw=true>)供查阅。

> Demo—[下载](<https://github.com/AllLuckly/LBBaiDuSSP_Demo>)

好文推荐：[iOS开发内购全套图文教程](<https://allluckly.cn/ios%E6%94%AF%E4%BB%98/iOS%E5%BC%80%E5%8F%912015%E5%B9%B4%E6%9C%80%E6%96%B0%E5%86%85%E8%B4%AD%E6%95%99%E7%A8%8B>)

版权归©Bison所有 如需转载请保留原文超链接地址！否则后果自负！

