Anzeigen mit Prämie sind Anzeigen, mit denen Nutzer im Gegenzug für In-App-Prämien interagieren können. 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 Erstellen und Testen Ihrer Apps Testanzeigen und keine Liveanzeigen. Andernfalls kann Ihr Konto gesperrt werden.
Testanzeigen lassen sich am einfachsten mit unserer speziellen Test-ID für Anzeigenblöcke für iOS-Anzeigen mit Prämie laden:
ca-app-pub-3940256099942544/1712485313
Er wurde speziell so konfiguriert, dass bei jeder Anfrage Testanzeigen zurückgegeben werden. Sie können ihn beim Programmieren, Testen und Debuggen kostenlos in Ihren eigenen Apps verwenden. Ersetzen Sie sie einfach durch Ihre eigene Anzeigenblock-ID, bevor Sie Ihre App veröffentlichen.
Weitere Informationen zur Funktionsweise der Testanzeigen des Mobile Ads SDK finden Sie unter Testanzeigen.
Implementierung
So binden Sie Interstitial-Anzeigen mit Prämie ein:
- Anzeige laden
- [Optional] SSV-Callbacks validieren
- Für Rückrufe registrieren
- Die Anzeige präsentieren und das Prämienereignis verarbeiten
Anzeige laden
Eine Anzeige wird mit der statischen Methode loadWithAdUnitID:request:completionHandler:
in der Klasse GADRewardedAd
geladen. Für die Lademethode sind die Anzeigenblock-ID, ein GADRequest
-Objekt und ein Abschluss-Handler erforderlich, der aufgerufen wird, wenn das Laden der Anzeigen erfolgreich ist oder fehlschlägt. Das geladene GADRewardedAd
-Objekt wird im Abschluss-Handler als Parameter bereitgestellt. Das folgende Beispiel zeigt, wie ein GADRewardedAd
in Ihrer ViewController
-Klasse geladen wird.
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] Rückrufe der serverseitigen Überprüfung (SSV) validieren
Apps, die zusätzliche Daten für Callbacks bei der serverseitigen Überprüfung erfordern, sollten die Funktion für benutzerdefinierte Daten von Anzeigen mit Prämie verwenden. Jeder Stringwert, der für ein Objekt für Anzeigen mit Prämie festgelegt wurde, wird an den Abfrageparameter custom_data
des SSV-Callbacks übergeben. Wenn kein benutzerdefinierter Datenwert festgelegt ist, ist der Wert des Abfrageparameters custom_data
nicht im SSV-Callback enthalten.
Im folgenden Codebeispiel wird gezeigt, wie Sie benutzerdefinierte Daten für ein Anzeigenobjekt mit Prämie festlegen, bevor Sie eine Anzeige anfordern.
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
Um Benachrichtigungen zu Präsentationsereignissen zu erhalten, müssen Sie das GADFullScreenContentDelegate
-Protokoll implementieren und der fullScreenContentDelegate
-Eigenschaft der zurückgegebenen Anzeige zuweisen. Das GADFullScreenContentDelegate
-Protokoll verarbeitet Callbacks, wenn die Anzeige erfolgreich oder nicht erfolgreich ausgeliefert 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 ist, kann sie nicht noch einmal präsentiert werden. Es empfiehlt sich, eine weitere Anzeige mit Prämie in der Methode adDidDismissFullScreenContent:
auf GADFullScreenContentDelegate
zu laden. Dann wird die nächste Anzeige mit Prämie geladen, sobald die vorherige geschlossen wird.
Die Anzeige präsentieren und das Prämienereignis verarbeiten
Bevor Nutzern eine Anzeige mit Prämie präsentiert wird, müssen Sie ihnen ausdrücklich die Möglichkeit geben, sich die Inhalte der Anzeige mit Prämie anzusehen, um eine Prämie zu erhalten. Anzeigen mit Prämie müssen immer aktiviert werden.
Wenn Sie Ihre Anzeige präsentieren, müssen Sie ein GADUserDidEarnRewardHandler
-Objekt zur Verfügung stellen, um die Prämie für den Nutzer zu verarbeiten.
Mit dem folgenden Code wird die beste Methode zum Ausliefern einer Anzeige mit Prämie dargestellt.
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");
}
}
Häufig gestellte Fragen
- Kann ich die Details zur Prämie für
GADRewardedAd
einsehen? - Ja. Wenn Sie den Prämienbetrag benötigen, bevor der
userDidEarnReward
-Callback ausgelöst wird, hatGADRewardedAd
die PropertyadReward
, die Sie überprüfen können, um den Prämienbetrag zu überprüfen, nachdem die Anzeige geladen wurde. - Gibt es eine Zeitüberschreitung für den Initialisierungsaufruf?
- Nach 10 Sekunden ruft das Google Mobile Ads SDK den für die Methode
startWithCompletionHandler:
bereitgestelltenGADInitializationCompletionHandler
auf, selbst wenn ein Vermittlungsnetzwerk die Initialisierung noch nicht abgeschlossen hat. - Was kann ich tun, wenn einige Vermittlungsnetzwerke nicht bereit sind, wenn ich den Initialisierungs-Callback erhalte?
Wir empfehlen, eine Anzeige in
GADInitializationCompletionHandler
zu laden. Auch wenn ein Vermittlungsnetzwerk nicht bereit ist, fordert das Google Mobile Ads SDK von diesem Netzwerk eine Anzeige an. Wenn also ein Vermittlungsnetzwerk die Initialisierung nach dem Zeitlimit beendet, können zukünftige Anzeigenanfragen in dieser Sitzung weiterhin bearbeitet werden.Sie können während der gesamten App-Sitzung weiterhin den Initialisierungsstatus aller Adapter abfragen, indem Sie
GADMobileAds.initializationStatus
aufrufen.- Wie finde ich heraus, warum ein bestimmtes Vermittlungsnetzwerk nicht bereit ist?
Die Eigenschaft
description
einesGADAdapterStatus
-Objekts gibt an, warum ein Adapter nicht für die Verarbeitung von Anzeigenanfragen bereit ist.- Wird der Abschluss-Handler
userDidEarnRewardHandler
immer vor der Delegate-MethodeadDidDismissFullScreenContent:
aufgerufen? Bei Google Ads erfolgen alle
userDidEarnRewardHandler
-Aufrufe voradDidDismissFullScreenContent:
. Bei Anzeigen, die über die Vermittlung ausgeliefert werden, richtet sich die Callback-Reihenfolge nach der Implementierung des SDK des Drittanbieter-Werbenetzwerks. Bei Werbenetzwerk-SDKs, die eine einzelne Delegationsmethode mit Prämieninformationen bereitstellen, ruft der VermittlungsadapteruserDidEarnRewardHandler
voradDidDismissFullScreenContent:
auf.
Beispiele auf GitHub
- Beispiel für Anzeigen mit Prämie: Swift | Objective-C
Nächste Schritte
Weitere Informationen zum Datenschutz für Nutzer