ExelBid_iOS_Swift 2.1.1

ExelBid_iOS_Swift 2.1.1

ExelBid_iOS_Trunk 维护。



  • Motiv Intelligence

目录

版本历史

版本 1.3.16

  • 框架 -> 应用中介功能 (Exelbid, Adfit, Admob, Fan)

版本 1.3.11

  • 框架 -> 更改为 xcframework 文件 (多个框架)

版本 1.3.10

  • 修改 AdView 功能

版本 1.3.9

  • URLConnection 添加 header Content-Type

版本 1.3.8

  • 根据终止使用 UIWebView 的要求,对 WkWebView 进行替换响应及错误修复

版本 1.3.5

  • 响应 iOS 13 ViewController 问题

版本 1.3.4

  • 解决 Arcvhive 时 bitcode 设置问题

版本 1.3.3

  • 响应 iOS 11 版本 (应用 Safe Area)

版本 1.3.2

  • 添加 Method,使横幅可以绑定到全屏 Screen 的大小,而不是设置为的尺寸

版本 1.2.0

  • 根据广播通信委员会实施的《在线个性化广告个人信息保护指南》,增加有关 nativePrivacyInformationIconImageView 相关的附加说明

开始

  1. 创建账户
  2. 库存 -> 应用 -> + 创建新应用
  3. 注册应用程序信息后,创建 unit。

应用设置

添加ExelBid SDK

ExelBid SDK库的安装支持CocoaPods。

通过CocoaPods安装

CocoaPods可用于简单安装和用于项目的库等。有关详细安装方法,请查看CocoaPods网站。

$ gem install cocoapods

Podfile

使用CocoaPods在Xcode项目中使用ExelBidSDK,请在Podfile中指定ExelBidSDK。

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

target 'TargetName' do
pod ‘ExelBid_iOS’
end

接下来,运行install命令。如果您已经安装,请运行update。

$ pod install
or
$ pod update

Xcode 设置 (iOS9 以上)

请在该项目的 info.plist 中添加 ‘App Transport Security Settings’ 属性。添加子项 ‘Allow Arbitrary Loads’ 并将其值设置为 ‘YES’。

广告 应用

应用 标识 注册

在主页面上首次注册从主页面上获得的 App ID。

  • setEBAppId(NSString) : 从主页面上获得的 App ID
#import <ExelBidSDK/ExelBidSDK.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [ExelBidKit setEBAppId:@“앱 아이디”];
    return YES;
}

实例 常用方法

为了提高广告效率,最好设置年龄和性别。

  • setYob(NSString) : 出生年份四位(2016)
  • setGender(NSString) : 性别(M:男性,F:女性)
  • setLocation(CLLocation) : 位置信息
  • setKeywords(NSString) : 自定义元数据(Key=Value, ...)
  • setTesting(BOOL) : 这是一个为广告测试而设置的值。它不会适用于统计,并且广告总是会被显示。
  • setAdUnitId(String) : 设置广告单元 ID。

时间条广告

使用横幅广告形式。

  1. 确认从网站获得的单元ID。 unit id

  2. 创建EBAdView实例。(注册从主页获得的单元ID和横幅广告的尺寸。)

- (id)initWithAdUnitId:(NSString *)adUnitId size:(CGSize)size

例:

self.adView = [[EBAdView alloc] initWithAdUnitId:@“유닛 아이디” size:_adViewContainer.bounds.size];
self.adView.delegate = self;
[_adViewContainer addSubview:self.adView];
  1. 请求广告。
- (void)loadAd

例:

[self.adView loadAd];
  1. 协议引用

EBAdView协议引用

- (void)adViewDidLoadAd:(EBAdView *)view        // 광고가 로딩된 시점에 호출 됩니다.
- (void)willLoadViewForAd:(EBAdView *)view      // 광고 클릭시 호출 됩니다.
- (void)adViewDidFailToLoadAd:(EBAdView *)view statusCode:(NSInteger)statusCode	// 서버로부터 광고를 가져오지 못한 경우에 호출 됩니다.
  1. 如果要在AdView中绑定宽度为100%的webview,可以添加以下方法。 (SDK版本1.3.2)

默认情况下会以设置的广告尺寸为中心对齐绑定。

setFullWebView(BOOL)

浮层广告

  1. 创建浮层广告实例。(注册从主页获得的浮层广告单元ID。)
+ (EBInterstitialAdController *)interstitialAdControllerForAdUnitId:(NSString *)adUnitId

例:

self.interstitial = [EBInterstitialAdController interstitialAdControllerForAdUnitId:”유닛 아이디”];
self.interstitial.delegate = self;
  1. 浮层广告请求
- (void)loadAd

例:

[self.interstitial loadAd];
  1. 广告加载确认
@property (nonatomic, assign, readonly) BOOL ready; //전면 광고를 노출시킬 준비가 되어있는지 체크한다.
  1. 浮层广告展示
- (void)showFromViewController:(UIViewController *)controller // 전면 광고를 노출합니다.

例:

[self.interstitial showFromViewController:self];
  1. 协议引用

EBInterstitialAdControllerDelegate协议引用

- (void)interstitialDidLoadAd:(EBInterstitialAdController *)interstitial	//광고가 로딩된 시점에 호출 됩니다.
- (void)interstitialWillAppear:(EBInterstitialAdController *)interstitial	//전면 광고가 사용자에게 노출된 시작시 호출됩니다
- (void)interstitialWillDisappear:(EBInterstitialAdController *)interstitial	//전면 광고가 사용자에게 노출된 시점에 호출됩니다.
- (void)interstitialDidReceiveTapEvent:(EBInterstitialAdController *)interstitial 	//광고 클릭시 호출 됩니다.
- (void)interstitialWillDisappear:(EBInterstitialAdController *)interstitial	//사용자가 전면광고를 닫는 시점에 호출 됩니다.
- (void)interstitialDidDisappear:(EBInterstitialAdController *)interstitial	//전면광고가 닫힌 후 호출 됩니다.
- (void)interstitialDidFailToLoadAd:(EBInterstitialAdController *)interstitial	//서버로부터 광고를 가져오지 못한 경우에 호출 됩니다.

原生

  1. 创建原生广告实例。(注册从主页获得的单元ID和广告类别。)
+ (void)initNativeAdWithAdUnitIdentifier:(NSString *)identifier adViewClass:(Class)adViewClass

例:

[ExelBidNativeManager initNativeAdWithAdUnitIdentifier:”유닛아이디” adViewClass:[EBNativeAdView class]];
  1. 渲染将要广告显示区域的信息。

EBNativeAdRendering协议引用

- (UILabel *)nativeMainTextLabel;
- (UILabel *)nativeTitleTextLabel;
- (UIImageView *)nativeIconImageView;
- (UIImageView *)nativeMainImageView;
- (UIView *)nativeVideoView;
- (UILabel *)nativeCallToActionTextLabel;
- (UIImageView *)nativePrivacyInformationIconImageView;
- (void)layoutStarRating:(NSNumber *)starRating;
- @interface EBNativeAdView : UIView<EBNativeAdRendering>   // 네이티브 광고가 노출 되어야 하는 View를 설정합니다. 광고요청시 설정되는 항목으로는 제목, 상세설명, 메인이미지, 아이콘, 별점, 액션 버튼의 텍스트가 있으며, 어플리케이션에서 사용할 항목만 NativeView에 설정하면 됩니다.
- (UIImageView *)nativeMainImageView    // 생성자에 설정한 View에 포함되어 있는 광고의 메인 이미지가 노출될 ImageView의 id를 설정합니다.
- (UILabel *)nativeCallToActionTextLabel    // 생성자에 설정한 View에 포함되어 있는 광고의 ActionButton id를 설정합니다. 해당 Button에 텍스트가 설정 됩니다.
- (UILabel *)nativeTitleTextLabel   // 생성자에 설정한 View에 포함되어 있는 광고의 제목이 설정 될 TextView의 id를 설정합니다.
- (UILabel *)nativeMainTextLabel    // 생성자에 설정한 View에 포함되어 있는 광고의 설명이 설정 될 TextView의 id를 설정합니다.
- (UIImageView *)nativeIconImageView    // 생성자에 설정한 View에 포함되어 있는 광고의 아이콘이 노출될 ImageView의 id를 설정합니다.
- (void)layoutStarRating:(NSNumber *)starRating // 생성자에 설정한 View에 포함되어 있는 광고의 별점이 표시될 RatingBar의 id를 설정합니다.
- (UIImageView *)nativePrivacyInformationIconImageView  // 생성자에 설정한 View에 포함되어 있는 광고 정보 표시 아이콘이 노출될 ImageView를 설정합니다. 해당 ImageView의 속성에 기본 Info 아이콘이 바이딩 됩니다.

根据2017年7月由广播通信委员会执行的“在线定制广告个人信息保护指南”,必须实施。根据广告主提供的广告类型(是否为定制广告)决定显示信息显示图标(Opt-out)。※广告信息显示图标的显示ImageView的大小为NxN(推荐20x20)。

  1. 开始广告加载。
+ (void)startWithCompletionHandler:(EBNativeAdRequestHandler)handler

块引用

typedef void(^EBNativeAdRequestHandler)(EBNativeAdRequest *request, EBNativeAd *response, NSError *error);  // 광고 데이터를 가져옵니다.

例:

[ExelBidNativeManager startWithCompletionHandler:^(EBNativeAdRequest *request, EBNativeAd *response, NSError *error) {
  if (error) {
  } else {
      self.nativeAd = response;
      self.nativeAd.delegate = self;
      ...
  }
}];
  1. 原生广告显示
- (UIView *)retrieveAdViewWithError:(NSError **)error;

例:

UIView *adView = [self.nativeAd retrieveAdViewWithError:nil];
[self.adViewContainer addSubview:adView];
  1. 协议引用

EBNativeAdDelegate协议引用

- (void)willLoadForNativeAd:(EBNativeAd *)nativeAd    // 광고 클릭시 호출 됩니다.

本地Adapter

当使用如UITableView、UICollectionView等基于BaseAdapter的组件时,可以使用以下方法。

  1. 创建EBNativeAdRequestTargeting对象
+ (EBNativeAdRequestTargeting *)targeting

例:

EBNativeAdRequestTargeting *targeting = [EBNativeAdRequestTargeting targeting];
  1. 本地广告设置

EBNativeAdRendering协议参考 // 提供关于广告展示区域信息的渲染。

- (UILabel *)nativeMainTextLabel;
- (UILabel *)nativeTitleTextLabel;
- (UIImageView *)nativeIconImageView;
- (UIImageView *)nativeMainImageView;
- (UIView *)nativeVideoView;
- (UILabel *)nativeCallToActionTextLabel;
- (UIImageView *)nativePrivacyInformationIconImageView;
- (void)layoutStarRating:(NSNumber *)starRating;

(void)setDesiredAssets:(NSSet *)desiredAssets // 设置在请求本地广告时应用中必须请求的项目。

例:

targeting.desiredAssets = [NSSet setWithObjects:kAdIconImageKey,
                          kAdMainImageKey,
                          kAdCTATextKey,
                          kAdTextKey,
                          kAdTitleKey,
                          nil];
  1. 设置广告展示的区域

在UITableView和UICollectionView的尺寸设置后,创建EBTableViewAdPlacer实例。

+ (instancetype)placerWithTableView:(UITableView *)tableView viewController:(UIViewController *)controller rendererConfigurations:(NSArray *)rendererConfigurations;
+ (instancetype)placerWithCollectionView:(UICollectionView *)collectionView viewController:(UIViewController *)controller rendererConfigurations:(NSArray *)rendererConfigurations;

例:

EBStaticNativeAdRendererSettings *nativeAdSettings = [[EBStaticNativeAdRendererSettings alloc] init];
nativeAdSettings.renderingViewClass = [EBTableViewAdPlacerView class];	//네이티브 광고영역뷰 클래스
nativeAdSettings.viewSizeHandler = ^(CGFloat maximumWidth) {
    return CGSizeMake(maximumWidth, 330.0f);
};
EBNativeAdRendererConfiguration *nativeAdConfig = [EBStaticNativeAdRenderer rendererConfigurationWithRendererSettings:nativeAdSettings];
self.placer = [EBTableViewAdPlacer placerWithTableView:self.tableView viewController:self rendererConfigurations:@[nativeAdConfig]];
self.placer.delegate = self;
  1. 设置列表视图中适配器。
- (void)loadAdsForAdUnitID:(NSString *)adUnitID targeting:(EBNativeAdRequestTargeting *)targeting

例:

[self.placer loadAdsForAdUnitID:”유닛아이디” targeting:”EBNativeAdRequestTargeting 객체”];

介质

使用Exelbid iOS SDK进行广告集成时,对于介质的集成,各应用中集成的广告SDK的最优化调用顺序响应。(包括Exelbid)

介质设置

// 미디에이션 초기화
[ExelBidMediationManager initMediationWithAdUnitIdentifier:@"Exelbid Unit Id"];

// ExelBid 미디에이션 타입 설정
[ExelBidMediationManager mediationTypes: [NSSet setWithObjects:EBMediationTypeExelbid, EBMediationTypeAdfit, nil]];

// ExelBid 미디에이션 콜백
[ExelBidMediationManager startWithCompletionHandler:^(EBMediationRequest *request, EBMediationInfo *response, NSError *error) {
    if (error) {
        NSLog(@"================> %@", error);
    } else {
        // ExelBid 미디에이션 정보 객체 설정
        self.mediationInfo = response;
    }
}];

介质调用顺序

- (void)loadMediation
{
    // ExelBid 미디에이션 객체 체크
    if (self.mediationInfo != nil) {
        // ExelBid 미디에이션 목록 순서대로 가져오기 (더이상 없으면 nil)
        EBMediation *mediation = [self.mediationInfo next];
        
        if ([mediation.type isEqualToString:EBMediationTypeExelbid]) {
            // Exelbid SDK 광고
            ...
        } else if ([mediation.type isEqualToString:EBMediationTypeAdfit]) {
            // Adfit SDK 광고 
            ...
        }
    }
}

ExelBidMediationManager协议参考 // 设置介质类型和处理程序并接收响应。

+ (void)testing:(BOOL)testing;
+ (void)mediationTypes:(NSSet *)mediationTypes;
+ (void)initMediationWithAdUnitIdentifier:(NSString *)identifier;
+ (void)startWithCompletionHandler:(EBMediationRequestHandler)handler;

EBMediationInfo协议参考 // 获取或重置响应的介质顺序。

- (NSUInteger)size;
- (EBMediation *)next;
- (void)reset;

EBMediation协议参考 // 介质信息。

NSString *type        // 미디에이션 타입
int index             // 미디에이션 순번
int priority_rate     // 비중
NSString *unit_id     // 광고 유닛 아이디

错误处理

在响应接收处理器中,您可以通过NSError *error检查错误。

8020 未设置列表。(包括国家信息)
8010 单位ID错误。值为空或格式错误
9xxx 网络错误,响应JSON解析错误等
8888 其他错误

示例指导

更详细的内容请参考以下示例代码。
https://github.com/onnuridmc/ExelBid-iOS-SDK/tree/master/sample/ExelBidSample/ExelBidSample/Contollers/mediation

除 Exelbid 和第三方广告 SDK 整合需参照各自指南进行设置。