原生广告
原生广告可让您以与现有设计一致的方式来呈现广告,让用户有浑然一体的使用体验。
当原生广告加载成功后,您可以访问广告的各个素材,然后按照您的UI布局来进行展示。
以下各节将向您介绍如何加载和显示原生广告。
加载广告
加载插屏广告,首先创建插屏广告实例对象 CTNativeAd ,然后调用其 loadAd 方法
- Objective-C
objc
#import <CartySDK/CartySDK.h>
self.nativeAd = [[CTNativeAd alloc] init];
self.nativeAd.placementid = @"<your-placement-id>";
self.nativeAd.rootViewController = self;
self.nativeAd.delegate = self;
[self.nativeAd loadAd];- Swift
swift
import CartySDK
nativeAd = CTNativeAd()
nativeAd.placementid = "<your-placement-id>"
nativeAd.rootViewController = self
nativeAd.delegate = self
nativeAd.load()实现监听回调
实现 CTNativeAdDelegate 接收广告相关回调通知
- Objective-C
objc
- (void)CTNativeAdDidLoad:(nonnull CTNativeAd *)ad {
NSLog(@"加载成功");
}
- (void)CTNativeAdLoadFail:(nonnull CTNativeAd *)ad withError:(nonnull NSError *)error {
NSLog(@"加载失败: %@",error.localizedDescription);
}
- (void)CTNativeAdDidShow:(nonnull CTNativeAd *)ad {
NSLog(@"展示成功");
}
- (void)CTNativeAdShowFail:(nonnull CTNativeAd *)ad withError:(nonnull NSError *)error {
NSLog(@"展示失败: %@",error.localizedDescription);
}
- (void)CTNativeAdDidClick:(nonnull CTNativeAd *)ad {
NSLog(@"广告被点击");
}- Swift
swift
func ctNativeAdDidLoad(_ ad: CTNativeAd) {
print("加载成功")
}
func ctNativeAdLoadFail(_ ad: CTNativeAd, withError error: any Error) {
print("加载失败 \(error.localizedDescription)")
}
func ctNativeAdDidShow(_ ad: CTNativeAd) {
print("展示成功")
}
func ctNativeAdShowFail(_ ad: CTNativeAd, withError error: any Error) {
print("展示失败 \(error.localizedDescription)")
}
func ctNativeAdDidClick(_ ad: CTNativeAd) {
print("广告被点击")
}原生广告素材列表
加载成功后,可以从原生广告对象中获取到以下素材
| 素材名称 | 类型 |
|---|---|
| title | NSString |
| desc | NSString |
| ctaText | NSString |
| iconImageURL | NSString |
| adChoiceView | UIView |
| mediaView | UIView |
展示广告
展示原生广告时,需要在进行完您的UI布局后,调用 CTNativeAd 的 registerContainer 方法来注册广告容器及可点击元素。
- Objective-C
objc
if(!self.nativeAd.isReady)
{
return;
}
//设置标题文字
self.nativeView.titleLabel.text = self.nativeAd.title;
//设置说明文字
self.nativeView.textLabel.text = self.nativeAd.desc;
//设置按钮文字
self.nativeView.ctaLabel.text = self.nativeAd.ctaText;
//添加广告的mediaView
[self.nativeView.mainView addSubview:self.nativeAd.mediaView];
//添加广告的角标
[self.nativeView.adChoiceView addSubview:self.nativeAd.adChoiceView];
//设置小图
if(self.nativeAd.iconImageURL){
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:self.nativeAd.iconImageURL]];
dispatch_async(dispatch_get_main_queue(), ^{
self.nativeView.iconImageView.image = [UIImage imageWithData:data];
});
});
}
//将广告容器添加到屏幕上进行展示
[self.adView addSubview:self.nativeView];
//调用API注册广告容器和可点击元素
[self.nativeAd registerContainer:self.nativeView withClickableViews:@[self.nativeView.titleLabel,self.nativeView.iconImageView,self.nativeView.mainImageView,self.nativeView.ctaLabel]];- Swift
swift
if(!nativeAd.isReady())
{
return
}
//设置标题文字
nativeView!.titleLabel!.text = nativeAd.title
//设置说明文字
nativeView!.textLabel!.text = nativeAd.desc
//设置按钮文字
nativeView!.ctaLabel!.text = nativeAd.ctaText
//添加广告的mediaView
nativeView!.mainView!.addSubview(nativeAd.mediaView!)
//添加广告的角标
nativeView!.adChoiceView!.addSubview(nativeAd.adChoiceView!)
//设置小图
if(nativeView!.iconImageView != nil && nativeAd.iconImageURL != nil)
{
fetchRemoteImage(urlStr: nativeAd.iconImageURL!)
}
//将广告容器添加到屏幕上进行展示
adView?.addSubview(nativeView!)
//调用API注册广告容器和可点击元素
nativeAd.registerContainer(nativeView!, withClickableViews: array)其他
静音设置
需要在加载前设置
- Objective-C
objc
self.nativeAd.isMute = YES;- Swift
swift
nativeAd.isMute = true