Skip to content

原生广告

原生广告可让您以与现有设计一致的方式来呈现广告,让用户有浑然一体的使用体验。

当原生广告加载成功后,您可以访问广告的各个素材,然后按照您的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("广告被点击")
}

原生广告素材列表

加载成功后,可以从原生广告对象中获取到以下素材

素材名称类型
titleNSString
descNSString
ctaTextNSString
iconImageURLNSString
adChoiceViewUIView
mediaViewUIView

展示广告

展示原生广告时,需要在进行完您的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

示例