目录
版本历史
版本 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 issue 的应对
版本 1.3.4
- 解决 Archive 时 bitcode 设置问题
版本 1.3.3
- 对应 iOS 11 版本 (Safe Area 应用)
版本 1.3.2
- 添加 Method,使横幅的设置大小变为整个屏幕大小
版本 1.2.0
- 根据广播通信委员会条例 '在线个性化广告个人信息保护指南',增加了与 nativePrivacyInformationIconImageView 相关的附加说明
开始使用
- 创建账户
- Inventory -> App -> + 创建新应用
- 注册应用信息后,创建单位
应用设置
添加ExelBid SDK
ExelBid SDK库的安装支持使用CocoaPods。
使用CocoaPods安装
$ gem install cocoapods
Podfile
如果您想在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’。
广告实现
应用ID注册
首次在注册时使用从网站获得的应用ID。
- setEBAppId(NSString) : 从网站获得的应用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。
横幅广告
使用横幅广告。
- (id)initWithAdUnitId:(NSString *)adUnitId size:(CGSize)size
示例)
self.adView = [[EBAdView alloc] initWithAdUnitId:@“유닛 아이디” size:_adViewContainer.bounds.size];
self.adView.delegate = self;
[_adViewContainer addSubview:self.adView];
- 请求广告。
- (void)loadAd
示例)
[self.adView loadAd];
- 协议引用
EBAdView协议引用
- (void)adViewDidLoadAd:(EBAdView *)view // 광고가 로딩된 시점에 호출 됩니다. - (void)adViewDidFailToLoadAd:(EBAdView *)view // 서버로부터 광고를 가져오지 못한 경우에 호출 됩니다. - (void)willLoadViewForAd:(EBAdView *)view // 광고 클릭시 호출 됩니다.
- 如果要将 Width 100% 的 WebView 绑定到 AdView 里面,可以添加以下方法。 (SDK Version. 1.3.2)
默认情况下,使用设定的广告大小居中绑定。
setFullWebView(BOOL)
全屏广告
- 创建全屏广告实例。 (注册从网站获得的全屏广告单元ID。)
+ (EBInterstitialAdController *)interstitialAdControllerForAdUnitId:(NSString *)adUnitId
示例)
self.interstitial = [EBInterstitialAdController interstitialAdControllerForAdUnitId:”유닛 아이디”];
self.interstitial.delegate = self;
- 全屏广告请求
- (void)loadAd
示例)
[self.interstitial loadAd];
- 广告加载确认
@property (nonatomic, assign, readonly) BOOL ready; //전면 광고를 노출시킬 준비가 되어있는지 체크한다.
- 全屏广告展现
- (void)showFromViewController:(UIViewController *)controller // 전면 광고를 노출합니다.
示例)
[self.interstitial showFromViewController:self];
- 协议引用
EBInterstitialAdController协议引用
- (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 //서버로부터 광고를 가져오지 못한 경우에 호출 됩니다.
原生
- 创建原生广告实例。 (注册从网站获得的数据单元ID和横幅类。)
+ (void)initNativeAdWithAdUnitIdentifier:(NSString *)identifier adViewClass:(Class)adViewClass
示例)
[ExelBidNativeManager initNativeAdWithAdUnitIdentifier:”유닛아이디” adViewClass:[EBNativeAdView class]];
- 渲染广告将展示的区域信息。
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)的显示。 ※ 信息显示图标的显示大小为 NxN(推荐20x20)。
- 开始加载广告。
+ (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;
...
}
}];
- 原生广告曝光
- (UIView *)retrieveAdViewWithError:(NSError **)error;
示例)
UIView *adView = [self.nativeAd retrieveAdViewWithError:nil];
[self.adViewContainer addSubview:adView];
- 协议引用
EBNativeAdDelegate 协议参考
- (void)willLoadForNativeAd:(EBNativeAd *)nativeAd // 광고 클릭시 호출 됩니다.
原生 Adapter
在利用如UITableView, UICollectionView等например组件时,可以使用一个BaseAdapter的方法。
- 创建 EBNativeAdRequestTargeting 对象
+ (EBNativeAdRequestTargeting *)targeting
示例)
EBNativeAdRequestTargeting *targeting = [EBNativeAdRequestTargeting targeting];
- 设置原生广告
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];
- 设置广告将曝光的区域
设置广告将曝光的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;
- 设置列表视图的适配器。
- (void)loadAdsForAdUnitID:(NSString *)adUnitID targeting:(EBNativeAdRequestTargeting *)targeting
示例)
[self.placer loadAdsForAdUnitID:”유닛아이디” targeting:”EBNativeAdRequestTargeting 객체”];
微医
使用 Exelbid iOS SDK 进行广告集成时,如果采用 Mediation 集成,各个应用中的广告 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 协议参考 // 设置 Media 类型并设置处理程序和响应。
+ (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
|
UNIT ID 错误。值为空或格式错误 |
9xxx
|
网络错误,响应Json解析错误等 |
8888
|
其他错误 |