Mit der Native Ad API kannst du die Werbeanzeigen, die du in deiner App anzeigen möchtest, nach deinen Wünschen anpassen. Du erhältst über die Native Ad API keine fertigen Werbeanzeigen, sondern eine Gruppe an Werbeanzeigeneigenschaften, wie einen Titel, ein Bild oder einen Call-to-Action. Daraus kannst du eine UIView individuell zusammenstellen, in der die Werbeanzeige angezeigt wird.
Nutze unseren Leitfaden für Native Ads, wenn du Native Ads in deiner App erstellst.
Hier implementieren wir die folgende Native Ad-Platzierung. Du erstellst die folgenden Ansichten für die Native Ad.
Ansicht 1: Symbol des WerbetreibendenAnsicht 2: Titel der WerbeanzeigeAnsicht 3: Hinweis „Gesponsert“Ansicht 4: Wahl des Werbetreibenden | Ansicht 5: Medienansicht der WerbeanzeigeAnsicht 6: Sozialer KontextAnsicht 7: Hauptteil der WerbeanzeigeAnsicht 8: Call-to-Action-Button |

Stelle sicher, dass du die Leitfäden zu den ersten Schritten mit dem Audience Network und mit iOS abgeschlossen hast, bevor du fortfährst.
Folge beim Design deiner Native und Banner Ads dem iOS-Layoutleitfaden, um optimale Nutzererlebnisse zu gewährleisten.
Main.storyboard. Füge zum Haupt-View-Element ein UIView-Element hinzu und weise ihm den Namen adUIView zu. 
adIconImageView (FBMediaView), adTitleLabel (UILabel), adCoverMediaView (FBMediaView), adSocialContext (UILabel), adCallToActionButton (UIButton), adOptionsView (FBAdOptionsView), adBodyLabel (UILabel) und sponsoredLabel (UILabel) unter adUIView hinzu, wie unten im Bild gezeigt. 


ViewController.m (ViewController.swift, sofern du Swift verwendest) und ziehe dann adUIView in das ViewController-Objekt. Du kannst ihm den Namen adUIView geben. Führe diesen Schritt anschließend auch für adIconImageView, adTitleLabel, adCoverMediaView, adSocialContext, adCallToActionButton, adOptionsView, adBodyLabel und sponsoredLabel aus.

Nachdem du die UI-Elemente zur Anzeige von Native Ads erstellt hast, musst du als Nächstes die Native Ad laden und die Inhalte an die UI-Elemente binden.
ViewController dem FBNativeAdDelegate-Protokoll entspricht und füge eine FBNativeAd-Instanzvariable hinzu.
import UIKit
import FBAudienceNetwork
class ViewController: UIViewController, FBNativeAdDelegate {
private var nativeAd: FBNativeAd?
}viewDidLoad-Methode die folgenden Codezeilen hinzu, um den Inhalt der Native Ad zu laden.
override func viewDidLoad() {
super.viewDidLoad()
let nativeAd = FBNativeAd(placementID: "YOUR_PLACEMENT_ID")
nativeAd.delegate = self
nativeAd.loadAd()
}Die ID, die bei YOUR_PLACEMENT_ID angezeigt wird, ist eine temporäre ID ausschließlich für Testzwecke.
Wenn du diese temporäre ID in deinem Live-Code verwendest, erhalten deine Nutzer*innen keine Werbeanzeigen (sondern den Fehler Nichterfüllung). Du musst nach dem Testen hierher zurückkehren und diese temporäre ID durch eine Live-Placement-ID ersetzen.
Informationen dazu, wie du eine Live-Placement-ID generierst, findest du unter Audience Network-Setup.
ViewController die Delegate-Methode nativeAdDidLoad implementieren.
func nativeAdDidLoad(_ nativeAd: FBNativeAd) {
// 1. If there is an existing valid native ad, unregister the view
if let previousNativeAd = self.nativeAd, previousNativeAd.isAdValid {
previousNativeAd.unregisterView()
}
// 2. Retain a reference to the native ad object
self.nativeAd = nativeAd
// 3. Register what views will be tappable and what the delegate is to notify when a registered view is tapped
// Here only the call-to-action button and the media view are tappable, and the delegate is the view controller
nativeAd.registerView(
forInteraction: adUIView,
mediaView: adCoverMediaView,
iconView: adIconImageView,
viewController: self,
clickableViews: [adCallToActionButton, adCoverMediaView]
)
// 4. Render the ad content onto the view
adTitleLabel.text = nativeAd.advertiserName
adBodyLabel.text = nativeAd.bodyText
adSocialContextLabel.text = nativeAd.socialContext
sponsoredLabel.text = nativeAd.sponsoredTranslation
adCallToActionButton.setTitle(nativeAd.callToAction, for: .normal)
adOptionsView.nativeAd = nativeAd
}Um die Nutzererfahrung und deine Ergebnisse zu verbessern, solltest du den klickbaren Bereich festlegen, um versehentliche Klicks zu vermeiden. Auf der Seite zu den Richtlinien für das Audience Network-SDK erhältst du mehr Informationen darüber, wie du dafür sorgst, dass leere Bereiche nicht anklickbar sind.

Wenn du Anzeigen im Simulator schaltest, musst du die Einstellung auf „Testmodus“ festlegen, um Testwerbeanzeigen anzuzeigen. Weitere Informationen findest du unter Verwendung des Testmodus.
Im obigen Beispiel werden die Medieninhalte der Werbeanzeige in adCoverMediaView angezeigt, und der Objekttyp ist FBMediaView. Im vorigen Schritt haben wir gezeigt, wie du mit FBMediaView Medieninhalte aus einem FBNativeAd-Objekt lädst. Diese Ansicht ersetzt das manuelle Laden eines Titelbilds. Beim Erstellen der FBMediaView können Breite und Höhe entweder durch die automatischen Layout-Beschränkungen ermittelt werden, die im Storyboard festgelegt wurden, oder sie können hardcodiert werden. Die Breite und Höhe der Ansicht stimmen jedoch möglicherweise nicht mit dem eigentlichen Titelbild der Werbeanzeige überein, das später heruntergeladen wird. Um dieses Problem zu beheben, wird im folgenden Beispiel gezeigt, wie du das Seitenverhältnis des Inhalts ermittelst und die natürliche Breite und Höhe anwendest:
FBMediaViewDelegate implementiert.
class ViewController: UIViewController, FBNativeAdDelegate, FBMediaViewDelegate {
...
}FBMediaView-Objekts so fest, dass er dein Anzeige-Controller ist.
func nativeAdDidLoad(_ nativeAd: FBNativeAd) {
adCoverMediaView.delegate = self
}mediaViewDidLoad-Methode in deinem Anzeige-Controller
func mediaViewDidLoad(_ mediaView: FBMediaView) {
let currentAspect = mediaView.frame.size.width / mediaView.frame.size.height
print(currentAspect)
let actualAspect = mediaView.aspectRatio
print(actualAspect)
}mediaView.aspectRatio gibt einen positiven CGFloat zurück bzw. 0,0, wenn aktuell keine Werbeanzeige geladen ist. Der Wert ist gültig, sobald die Medienansicht geladen wurde. Es gibt einige praktische Methoden zur Festlegung der Breite und Höhe des FBMediaView-Objekts, die das Seitenverhältnis der geladenen Medieninhalte berücksichtigen. Du kannst applyNaturalWidth oder applyNaturalHeight aufrufen, um die Breite und Höhe des FBMediaView-Objekts zu aktualisieren und das Seitenverhältnis der Medieninhalte zu berücksichtigen.
Optional kannst du die folgenden Funktionen hinzufügen, um die Fälle zu verarbeiten, in denen die Native Ad geschlossen oder von einem*einer Nutzer*in angeklickt wird:
func nativeAdDidClick(_ nativeAd: FBNativeAd) {
print("Native ad was clicked.")
}
func nativeAdDidFinishHandlingClick(_ nativeAd: FBNativeAd) {
print("Native ad did finish click handling.")
}
func nativeAdWillLogImpression(_ nativeAd: FBNativeAd) {
print("Native ad impression is being captured.")
}Füge im Anzeige-Controller die folgende Funktion hinzu und implementiere sie, um mit Fehlern beim Laden von Werbeanzeigen umzugehen.
func nativeAd(_ nativeAd: FBNativeAd, didFailWithError error: Error) {
print("Native ad failed to load with error: \(error.localizedDescription)")
}let nativeAd = FBNativeAd(placementID: "YOUR_PLACEMENT_ID")
nativeAd.delegate = self
nativeAd.loadAd(withMediaCachePolicy: .none)func nativeAdDidLoad(_ nativeAd: FBNativeAd) {
...
self.adCoverMediaView.delegate = self
nativeAd.downloadMedia()
self.nativeAd = nativeAd
...
}registerViewForInteraction aufrufen und die Werbeanzeige nach dem mediaViewDidLoad-Rückruf anzeigen. Für zulässige Impressions müssen alle Medien geladen und angezeigt werden.
func mediaViewDidLoad(_ mediaView: FBMediaView) {
guard let nativeAd = nativeAd else {
return
}
// 1. Register what views will be tappable and what the delegate is to notify when a registered view is tapped
// Here only the call-to-action button and the media view are tappable, and the delegate is the view controller
nativeAd.registerView(
forInteraction: adUIView,
mediaView: mediaView,
iconView: adIconImageView,
viewController: self,
clickableViews: [adCallToActionButton, mediaView]
)
// 2. Render the ad content onto the view
adTitleLabel.text = nativeAd.advertiserName
adBodyLabel.text = nativeAd.bodyText
adSocialContextLabel.text = nativeAd.socialContext
sponsoredLabel.text = nativeAd.sponsoredTranslation
adCallToActionButton.setTitle(nativeAd.callToAction, for: .normal)
adOptionsView.nativeAd = nativeAd
}NativeAdSample steht als Teil des SDK zur Verfügung und befindet sich im Ordner FBAudienceNetwork/samples. Öffne das Projekt mit Xcode und führe es auf einem Gerät oder Simulator aus. Weitere Ressourcen |
Leitfaden für erste SchritteTechnischer Leitfaden für die ersten Schritte mit dem Audience Network CodebeispieleBeispiele für die Integration von Audience Network-Werbeanzeigen | FAQFAQ zu Audience Network Vorlage für Native AdsZur Vereinfachung der Integration von Native Ads |