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 |