Anzeigen mit Prämie sind Anzeigen, mit denen Nutzer interagieren können, indem sie In-App-Prämien erhalten. In diesem Leitfaden erfahren Sie, wie Sie Anzeigen mit Prämie aus AdMobin eine iOS-App einbinden. Hier finden Sie einige Erfolgsgeschichten von Kunden: Fallstudie 1, Fallstudie 2.
Voraussetzungen
- Google Mobile Ads SDK 8.0.0 oder höher.
- Arbeiten Sie den Startleitfaden durch.
Immer mit Testanzeigen testen
Verwenden Sie beim Entwickeln und Testen Ihrer Apps Testanzeigen und keine Produktionsanzeigen. Andernfalls kann Ihr Konto gesperrt werden.
Am einfachsten lassen sich Testanzeigen mit unserer dedizierten Test-Anzeigenblock-ID für iOS-Anzeigen mit Prämie laden:
ca-app-pub-3940256099942544/1712485313
Sie wurde speziell so konfiguriert, dass bei jeder Anfrage Testanzeigen zurückgegeben werden. Sie können die Funktion beim Programmieren, Testen und Debuggen in Ihren eigenen Apps verwenden. Ersetzen Sie sie einfach vor der Veröffentlichung Ihrer App durch Ihre Anzeigenblock-ID.
Weitere Informationen zur Funktionsweise von Testanzeigen des Mobile Ads SDK findest du unter Testanzeigen.
Implementierung
Die wichtigsten Schritte beim Einbinden von Anzeigen mit Prämie:
- Anzeige laden
- [Optional] SSV-Callbacks validieren
- Für Rückrufe registrieren
- Anzeige einblenden und Prämienereignis bearbeiten
Anzeige laden
Das Laden einer Anzeige erfolgt mit der statischen Methode loadWithAdUnitID:request:completionHandler:
in der Klasse GADRewardedAd
. Für die Lademethode sind Ihre Anzeigenblock-ID, ein GADRequest
-Objekt und ein Abschluss-Handler erforderlich, der aufgerufen wird, wenn das Laden der Anzeige erfolgreich ist oder fehlschlägt. Das geladene GADRewardedAd
-Objekt wird als Parameter im Abschluss-Handler bereitgestellt. Das folgende Beispiel zeigt, wie Sie eine GADRewardedAd
in Ihrer ViewController
-Klasse laden.
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var rewardedAd: GADRewardedAd?
func loadRewardedAd() {
do {
rewardedAd = try await GADRewardedAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest())
} catch {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}
}
}
Objective-C
@import GoogleMobileAds;
@import UIKit;
@interface ViewController ()
@property(nonatomic, strong) GADRewardedAd *rewardedAd;
@end
@implementation ViewController
- (void)loadRewardedAd {
GADRequest *request = [GADRequest request];
[GADRewardedAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"
request:request
completionHandler:^(GADRewardedAd *ad, NSError *error) {
if (error) {
NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
return;
}
self.rewardedAd = ad;
NSLog(@"Rewarded ad loaded.");
}];
}
[Optional] Callbacks für die serverseitige Überprüfung validieren
Apps, für die zusätzliche Daten bei Callbacks der serverseitigen Überprüfung erforderlich sind, sollten die Funktion für benutzerdefinierte Daten von Anzeigen mit Prämie verwenden. Jeder Stringwert, der für ein Anzeigenobjekt mit Prämie festgelegt ist, wird an den custom_data
-Abfrageparameter des SSV-Callbacks übergeben. Wenn kein benutzerdefinierter Datenwert festgelegt ist, ist der Wert des Abfrageparameters custom_data
nicht im SSV-Callback vorhanden.
Im folgenden Codebeispiel wird gezeigt, wie Sie benutzerdefinierte Daten für ein Anzeigenobjekt mit Prämie festlegen, bevor eine Anzeige angefordert wird.
Swift
do {
rewardedAd = try await GADRewardedAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest())
let options = GADServerSideVerificationOptions()
options.customRewardString = "SAMPLE_CUSTOM_DATA_STRING"
rewardedAd.serverSideVerificationOptions = options
} catch {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}
Objective-C
[GADRewardedAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"
request:[GADRequest request];
completionHandler:^(GADRewardedAd *ad, NSError *error) {
if (error) {
// Handle Error
return;
}
self.rewardedAd = ad;
GADServerSideVerificationOptions *options =
[[GADServerSideVerificationOptions alloc] init];
options.customRewardString = @"SAMPLE_CUSTOM_DATA_STRING";
ad.serverSideVerificationOptions = options;
}];
Für Rückrufe registrieren
Wenn Sie Benachrichtigungen zu Präsentationsereignissen erhalten möchten, müssen Sie das Protokoll GADFullScreenContentDelegate
implementieren und dem Attribut fullScreenContentDelegate
der zurückgegebenen Anzeige zuweisen. Das Protokoll GADFullScreenContentDelegate
verarbeitet Callbacks, wenn die Anzeige erfolgreich oder nicht ausgeliefert werden kann und geschlossen wird. Der folgende Code zeigt, wie das Protokoll implementiert und der Anzeige zugewiesen wird:
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController, GADFullScreenContentDelegate {
private var rewardedAd: GADRewardedAd?
func loadRewardedAd() {
do {
rewardedAd = try await GADRewardedAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest())
rewardedAd?.fullScreenContentDelegate = self
} catch {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}
}
/// Tells the delegate that the ad failed to present full screen content.
func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("Ad did fail to present full screen content.")
}
/// Tells the delegate that the ad will present full screen content.
func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad will present full screen content.")
}
/// Tells the delegate that the ad dismissed full screen content.
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad did dismiss full screen content.")
}
}
Objective-C
@interface ViewController () <GADFullScreenContentDelegate>
@property(nonatomic, strong) GADRewardedAd *rewardedAd;
@end
@implementation ViewController
- (void)loadRewardedAd {
GADRequest *request = [GADRequest request];
[GADRewardedAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/4806952744"
request:request
completionHandler:^(GADRewardedAd *ad, NSError *error) {
if (error) {
NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
return;
}
self.rewardedAd = ad;
NSLog(@"Rewarded ad loaded.");
self.rewardedAd.fullScreenContentDelegate = self;
}];
}
/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
NSLog(@"Ad did fail to present full screen content.");
}
/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"Ad will present full screen content.");
}
/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"Ad did dismiss full screen content.");
}
GADRewardedAd
ist ein Objekt zur einmaligen Verwendung. Sobald eine Anzeige mit Prämie
eingeblendet wurde, kann sie nicht erneut eingeblendet werden. Als Best Practice wird empfohlen, eine weitere Anzeige mit Prämie in der adDidDismissFullScreenContent:
-Methode auf GADFullScreenContentDelegate
zu laden, damit die nächste Anzeige mit Prämie geladen wird, sobald die vorherige Anzeige geschlossen wird.
Anzeige einblenden und Prämienereignis bearbeiten
Bevor Nutzern eine Anzeige mit Prämie präsentiert wird, müssen Sie ihnen die Möglichkeit geben, sich Anzeigen mit Prämie anzusehen. Anzeigen mit Prämie müssen dem Nutzer zugestimmt werden.
Wenn du deine Anzeige präsentierst, musst du ein GADUserDidEarnRewardHandler
-Objekt angeben, um die Prämie für den Nutzer zu verarbeiten.
Der folgende Code stellt die beste Methode zum Ausliefern einer Anzeige mit Prämie dar.
Swift
func show() {
guard let rewardedAd = rewardedAd else {
return print("Ad wasn't ready.")
}
// The UIViewController parameter is an optional.
ad.present(fromRootViewController: nil) {
let reward = ad.adReward
print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)")
// TODO: Reward the user.
}
}
Objective-C
- (void)show {
if (self.rewardedAd) {
// The UIViewController parameter is nullable.
[self.rewardedAd presentFromRootViewController:nil
userDidEarnRewardHandler:^{
GADAdReward *reward =
self.rewardedAd.adReward;
// TODO: Reward the user!
}];
} else {
NSLog(@"Ad wasn't ready");
}
}
FAQs
- Kann ich die Prämiendetails für die
GADRewardedAd
abrufen? - Ja. Wenn Sie den Prämienbetrag benötigen, bevor der
userDidEarnReward
-Callback ausgelöst wird, hatGADRewardedAd
die EigenschaftadReward
, mit der Sie den Prämienbetrag überprüfen können, nachdem die Anzeige geladen wurde. - Gibt es eine Zeitüberschreitung für den Initialisierungsaufruf?
- Nach 10 Sekunden ruft das Google Mobile Ads SDK die
GADInitializationCompletionHandler
für die MethodestartWithCompletionHandler:
auf, auch wenn die Initialisierung des Vermittlungsnetzwerks noch nicht abgeschlossen ist. - Was passiert, wenn einige Vermittlungsnetzwerke nicht bereit sind, wenn ich den Initialisierungs-Callback erhalte?
Wir empfehlen, eine Anzeige im
GADInitializationCompletionHandler
zu laden. Auch wenn ein Vermittlungsnetzwerk nicht bereit ist, fordert das Google Mobile Ads SDK das Werbenetzwerk weiterhin nach einer Anzeige an. Wird die Initialisierung eines Vermittlungsnetzwerks nach dem Zeitlimit abgeschlossen, können künftige Anzeigenanfragen in dieser Sitzung weiterhin verarbeitet werden.Sie können den Initialisierungsstatus aller Adapter während der gesamten App-Sitzung weiterhin abfragen, indem Sie
GADMobileAds.initializationStatus
aufrufen.- Wie finde ich heraus, warum ein bestimmtes Vermittlungsnetzwerk nicht bereit ist?
Die Eigenschaft
description
einesGADAdapterStatus
-Objekts beschreibt, warum ein Adapter nicht bereit ist, Anzeigenanfragen zu verarbeiten.- Wird der Abschluss-Handler
userDidEarnRewardHandler
immer vor der DelegatmethodeadDidDismissFullScreenContent:
aufgerufen? Bei Google Ads erfolgen alle
userDidEarnRewardHandler
-Aufrufe voradDidDismissFullScreenContent:
. Bei Anzeigen, die über die Vermittlung ausgeliefert werden, bestimmt die Implementierung des SDKs des Drittanbieter-Werbenetzwerks die Callback-Reihenfolge. Bei Werbenetzwerk-SDKs, die eine einzelne Delegationsmethode mit Prämieninformationen bereitstellen, ruft der VermittlungsadapteruserDidEarnRewardHandler
vor demadDidDismissFullScreenContent:
auf.
Beispiele auf GitHub
- Beispiel für Anzeigen mit Prämie: Swift | Objective-C
Nächste Schritte
Weitere Informationen zum Datenschutz für Nutzer