显示广告

如果您的应用程序显示广告,您可以将整个广告管理重新定位到Finteza。可在iOS设备上及时推出广告宣传活动,同时面向所有用户。而无需更改应用程序,等待App Store中新版本的发布和所有设备的更新。

事实上,您只需要在应用程序中定义广告区,那么整个内容管理,详细统计和转化都可以在Finteza中使用。

虽然在Finteza中广告被称为横幅,但它们不局限于静态图像和GIF动图。横幅是一个信息集合,它可以包含多种内容类型,包括HTML5:登录页、轮播、弹出窗口等。

FintezaBannerView类负责下载和显示SDK中的横幅内容。 它由UIView派生而来,使得能够以标准的方式将其添加到iOS应用程序类型的层次结构中。

在Finteza创建一个广告区#

在应用程序中创建横幅之前,请在Finteza中配置一个广告区。这可以使您管理广告块内容。

转至Finteza面板的“网站”部分,找到您的应用程序并点击“新区域”:

  • 设置名称和允许的内容格式。目前支持JPG、PNG、GIF和HTML文件。
  • 请设置预先知道的区域大小或选择自动缩放区域大小。
  • 保存更改并复制区域ID。它应该在应用程序中指定。
为网站/应用程序创建一个广告区

在应用程序中创建一个横幅#

您可以通过Interface Builder(界面生成器)或以编程方式创建横幅。

Interface Builder(界面生成器)

创建一个UIView类型的新界面元素。在“身份识别检查)选项卡的”自定义类“字段中设置FintezaBannerView。为横幅位置设置必要的限制。

通过Interface Builder(界面生成器)创建横幅

横幅大小可以根据intrinsicContentSize进行定义。


以编程方式

使用以下代码创建一个具有特定尺寸的横幅:

Objective-C:

FintezaBannerView *banner = [[FintezaBannerView alloc] initWithFrame:bannerFrame];

Swift:

var banner = FintezaBannerView(frame: bannerFrame)

使用以下代码创建一个占据整个视图的横幅(使用“自动布局”):

Objective-C:

FintezaBannerView *banner = [[FintezaBannerView alloc] initWithFrame:CGRectZero];
[self.view addSubview:banner];
 
banner.translatesAutoresizingMaskIntoConstraints=NO;
[NSLayoutConstraint activateConstraints:@[
   [banner.topAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.topAnchor],
   [banner.bottomAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.bottomAnchor],
   [banner.leadingAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.leadingAnchor],
   [banner.trailingAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.trailingAnchor]
  ]];

Swift:

let banner = FintezaBannerView(frame: .zero)
self.view.addSubview(banner)
 
banner.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
   banner.topAnchor.constraint(equalTo: self.view.layoutMarginsGuide.topAnchor),
   banner.bottomAnchor.constraint(equalTo: self.view.layoutMarginsGuide.bottomAnchor),
   banner.leadingAnchor.constraint(equalTo: self.view.layoutMarginsGuide.leadingAnchor),
   banner.trailingAnchor.constraint(equalTo: self.view.layoutMarginsGuide.trailingAnchor)
  ])

初始化#

为横幅设置区域ID和网站地址。

Objective-C和Swift:

banner.zoneID = @"{ZONE_ID}";
banner.site = @"{WEBSITE_URL}";

{ZONE_ID},设置Finteza广告区ID。在{WEBSITE_URL},设置区域对应的应用程序名称或网站域名。

这些参数也可以在Interface Builder(界面生成器)中设置。为此,请选择FintezaBannerView类对象并转至“属性检查”选项卡:

可通过Interface Builder(界面生成器)指定区域ID和网站/应用程序名称。

下载内容#

调用load方法以启动内容下载。

Objective-C:

[banner load];

Swift:

banner.load()

您可以指定一个委托对象来接收有关内容下载状态的通知。为此,请在委托属性中设置一个实施协议的对象:

@protocol FintezaBannerViewDelegate <NSObject>
- (void)fintezaBannerDidLoad:(nonnull FintezaBannerView *)banner;  // 内容下载成功时调用
- (void)fintezaBannerDidFail:(nonnull FintezaBannerView *)banner;  // 失败的情况下调用
@end

例如,委托只允许在下载内容之后向父视图添加横幅。

根据intrinsicContentSize定义横幅大小#

如果您使用“自动布局”,则可以根据标准的intrinsicContentSize属性来设置横幅大小。

对于FintezaBannerViewintrinsicContentSize等于Finteza区域设置中的设置值。区域大小在横幅请求阶段即可知晓。

如果没有指定确切的区域大小(区域设置中选择了“自定义大小,使用横幅宽度\高度”),intrinsicContentSize根据上传的横幅内容来定义。对于JPG、PNG和GIF横幅,这里表示图像大小。

这种方法不适用于HTML和自适应横幅,因为无法明确确定它们的内容大小。


广告循环#

广告循环时间通过rotationTime属性以秒计算进行设置(默认值为10分钟)。对于循环横幅,load方法应该在每次显示包含横幅的父视图时调用(例如, viewWillAppear)。直到rotationTime中指定的时间到期,才会导致不必要的网络请求。

Objective-C和Swift:

banner.rotationTime = 60  // 每分钟循环

若要禁用循环,请设置rotationTime = 0

rotationTime参数应在调用load方法之前指定。