Прежде чем продолжить, обязательно ознакомьтесь с руководствами по началу работы с Audience Network и iOS.
Чтобы эффективно использовать это руководство, вы должны быть знакомы с реализацией нативной рекламы.
В файле заголовка контроллера представления (или файле Swift, если вы используете Swift) импортируйте FBAudienceNetwork
, объявите соответствие протоколу FBNativeAdDelegate
и добавьте переменную экземпляра в рекламный блок:
import UIKit
import FBAudienceNetwork
class ViewController: UIViewController, FBNativeAdDelegate {
private var nativeAd: FBNativeAd?
}
Добавьте в файл реализации контроллера представления метод, который инициализирует FBNativeAd
, и отправьте запрос на загрузку рекламы:
override func viewDidLoad() {
super.viewDidLoad()
// Instantiate the ad object.
// NOTE: the placement ID will eventually identify this as your App, you can ignore it for
// now, while you are testing and replace it later when you have signed up.
// While you are using this temporary code you will only get test ads and if you release
// your code like this to the App Store your users will not receive ads (you will get a 'No Fill' error).
let nativeAd = FBNativeAd(placementID: "YOUR_PLACEMENT_ID")
nativeAd.delegate = self
nativeAd.loadAd()
}
В YOUR_PLACEMENT_ID
указывается временный ID, который используется только для тестирования.
Если вы будете использовать этот временный ID в рабочем коде, вместо рекламных объявлений пользователи будут получать ошибку No Fill. После тестирования необходимо вернуться к этому шагу и подставить вместо этого временного ID рабочий ID места размещения.
Инструкции по генерации рабочего ID места размещения см. в статье о настройке Audience Network.
Добавив код для загрузки рекламы, также добавьте следующие функции для формирования рекламного объявления:
func nativeAdDidLoad(_ nativeAd: FBNativeAd) {
if let previousNativeAd = self.nativeAd, previousNativeAd.isAdValid {
previousNativeAd.unregisterView()
}
self.nativeAd = nativeAd
let adView = FBNativeAdView(nativeAd: nativeAd, with: .genericHeight300)
view.addSubview(adView)
let size = view.bounds.size
let xOffset: CGFloat = size.width / 2 - 160
let yOffset: CGFloat = (size.height > size.width) ? 100 : 20
adView.frame = CGRect(x: xOffset, y: yOffset, width: 320, height: 300)
}
В качестве цели сборки выберите устройство и выполните показанный выше код. Результат должен быть примерно таким:
Существует два шаблона пользовательских форматов рекламы:
Тип шаблона представления | Высота | Ширина | Добавляемые атрибуты |
---|---|---|---|
| 300 точек | Адаптируемая ширина | Изображение, значок, заголовок, контекст, описание и кнопка призыва к действию |
| 400 точек | Адаптируемая ширина | Изображение, значок, заголовок, подзаголовок, контекст, описание и кнопка призыва к действию |
Для показа нативной баннерной рекламы с использованием шаблонов высотой 100 и 120 необходимо создать экземпляр FBNativeBannerAd
и показать его в экземпляре представления FBNativeBannerAdView
следующим образом:
В файле заголовка контроллера представления (или файле Swift, если вы используете Swift) импортируйте FBAudienceNetwork
, объявите соответствие протоколу FBNativeBannerAdDelegate
и добавьте переменную экземпляра в рекламный блок:
import UIKit
import FBAudienceNetwork
class ViewController: UIViewController, FBNativeBannerAdDelegate {
private var nativeBannerAd: FBNativeBannerAd?
}
Добавьте в файл реализации контроллера представления метод, который инициализирует FBNativeBannerAd
, и отправьте запрос на загрузку рекламы:
override func viewDidLoad() {
super.viewDidLoad()
// Instantiate a native banner ad object.
// NOTE: the placement ID will eventually identify this as your app. You can ignore it while you are testing
// and replace it later when you have signed up.
// While you are using this temporary code you will only get test ads and if you release
// your code like this to the App Store your users will not receive ads (you will get a ‘No Fill’ error).
let nativeBannerAd = FBNativeBannerAd(placementID: "YOUR_PLACEMENT_ID")
// Set a delegate to get notified when the ad was loaded.
nativeBannerAd.delegate = self
// Initiate a request to load an ad.
nativeBannerAd.loadAd()
}
В YOUR_PLACEMENT_ID
указывается временный ID, который используется только для тестирования.
Если вы будете использовать этот временный ID в рабочем коде, вместо рекламных объявлений пользователи будут получать ошибку No Fill. После тестирования необходимо вернуться к этому шагу и подставить вместо этого временного ID рабочий ID места размещения.
Инструкции по генерации рабочего ID места размещения см. в статье о настройке Audience Network.
Добавив код для загрузки рекламы, также добавьте следующие функции для формирования рекламного объявления:
func nativeBannerAdDidLoad(_ nativeBannerAd: FBNativeBannerAd) {
// 1. If there is an existing valid ad, unregister the view
if let previousAd = self.nativeBannerAd, previousAd.isAdValid {
previousAd.unregisterView()
}
// 2. Retain a reference to the ad object
self.nativeBannerAd = nativeBannerAd
// 3. Instantiate the ad view
let adView = FBNativeBannerAdView(nativeBannerAd: nativeBannerAd, with: .genericHeight100)
view.addSubview(adView)
// 4. Set the frame of the ad view (either manually or using constraints)
let size = view.bounds.size
let xOffset: CGFloat = size.width / 2 - 160
let yOffset: CGFloat = (size.height > size.width) ? 100 : 20
adView.frame = CGRect(x: xOffset, y: yOffset, width: 320, height: 300)
}
Существует два шаблона пользовательских форматов рекламы:
Тип шаблона представления | Высота | Ширина | Добавляемые атрибуты |
---|---|---|---|
| 100 точек | Адаптируемая ширина | Значок, заголовок, контекст и кнопка призыва к действию |
| 120 точек | Адаптируемая ширина | Значок, заголовок, контекст, описание и кнопка призыва к действию |
В нативном пользовательском шаблоне можно настроить следующие элементы:
При настройке отдельных элементов рекомендуется использовать дизайн, который соответствует макетам и темам приложения.
Для отображения этих элементов необходимо создать объект FBNativeAdViewAttributes
и передать загруженную нативную рекламу:
func nativeAdDidLoad(_ nativeAd: FBNativeAd) {
// Instantiate the attributes to customize the view
let attributes = FBNativeAdViewAttributes()
attributes.backgroundColor = UIColor(white: 0.9, alpha: 1)
attributes.buttonColor = UIColor(red: 66 / 255.0, green: 108 / 255.0, blue: 173 / 255.0, alpha: 1)
attributes.buttonTitleColor = .white
// Feed the attributes to the view
let adView = FBNativeAdView(nativeAd: nativeAd, with: .genericHeight300, with: attributes)
... Rest of implementation ...
}
Показанный выше код выводит рекламу, которая выглядит примерно так:
func nativeBannerAdDidLoad(_ nativeBannerAd: FBNativeBannerAd) {
// Instantiate the attributes to customize the view
let attributes = FBNativeAdViewAttributes()
attributes.backgroundColor = UIColor(white: 0.9, alpha: 1)
attributes.buttonColor = UIColor(red: 66 / 255.0, green: 108 / 255.0, blue: 173 / 255.0, alpha: 1)
attributes.buttonTitleColor = .white
// Instantiate the view and feed the attributes to the initializer
let adView = FBNativeBannerAdView(nativeBannerAd: nativeBannerAd, with: .genericHeight100, with: attributes)
... Rest of implementation ...
}
NativeAdSample
является частью SDK и находится в папке FBAudienceNetwork/samples
. Откройте проект в Xcode и запустите его на устройстве или в эмуляторе.