Anzeigen mit Prämie sind Anzeigen, mit denen Nutzer im Austausch mit ihnen interagieren können. für In-App-Prämien. Dieser Leitfaden zeigt Ihnen, wie Sie Anzeigen mit Prämie aus AdMob in einer iOS-App. Lesen Sie einige Erfolgsgeschichten von Kunden: Fallstudie 1, Fallstudie 2.
Vorbereitung
- 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 nur Testanzeigen, Live-Produktionsanzeigen. Andernfalls kann Ihr Konto gesperrt werden.
Die einfachste Methode zum Laden von Testanzeigen ist die Verwendung unserer Testanzeigenblock-ID für iOS. Anzeigen mit Prämie:
ca-app-pub-3940256099942544/1712485313
Sie wurde speziell so konfiguriert, dass bei jeder Anfrage Testanzeigen zurückgegeben werden. können Sie es beim Programmieren, Testen und Debuggen in Ihren eigenen Apps verwenden. Machen Sie einfach ersetzen Sie sie vor dem Veröffentlichen Ihrer App durch Ihre Anzeigenblock-ID.
Weitere Informationen zur Funktionsweise von Testanzeigen des Mobile Ads SDK finden Sie unter Test Anzeigen:
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 mithilfe der statischen
loadWithAdUnitID:request:completionHandler:
-Methode für
Klasse GADRewardedAd
. Für die Lademethode ist Ihre Anzeigenblock-ID erforderlich,
GADRequest
-Objekt und ein Abschluss-Handler
der aufgerufen wird, wenn
das Laden der Anzeige erfolgreich ist oder fehlschlägt. Das geladene
Das Objekt GADRewardedAd
wird in der Vervollständigung als Parameter bereitgestellt.
-Handler. Im folgenden Beispiel sehen Sie, wie ein GADRewardedAd
geladen wird:
Ihre ViewController
-Klasse.
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, die zusätzliche Daten serverseitig
Verifizierung Callbacks die Methode
Datenfunktion von Anzeigen mit Prämie. Beliebiger Stringwert, der in einer Anzeige mit Prämie festgelegt ist
wird an den custom_data
-Abfrageparameter des SSV-Callbacks übergeben. Falls nein
festgelegt ist, ist der Wert des Suchparameters custom_data
nicht gleich
im SSV-Callback vorhanden sind.
Im folgenden Codebeispiel wird gezeigt, wie benutzerdefinierte Daten für eine Anzeige mit Prämie festgelegt werden. -Objekt enthält, 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
Um Benachrichtigungen über Präsentationsereignisse zu erhalten, müssen Sie
das Protokoll GADFullScreenContentDelegate
und weisen Sie es dem
fullScreenContentDelegate
-Eigenschaft der zurückgegebenen Anzeige. Die
Das GADFullScreenContentDelegate
-Protokoll verarbeitet Rückrufe, wenn die Anzeige
erfolgreich oder nicht erfolgreich präsentiert und wenn sie geschlossen wird. Die folgenden
Code veranschaulicht, 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
angezeigt wird, kann er nicht erneut angezeigt werden. Es empfiehlt sich, eine weitere
Anzeige mit Prämie zu laden,
in der Methode adDidDismissFullScreenContent:
für GADFullScreenContentDelegate
sodass die nächste Anzeige mit Prämie geladen wird,
geschlossen.
Anzeige einblenden und Prämienereignis bearbeiten
Bevor Nutzern eine Anzeige mit Prämie präsentiert wird, müssen Sie eine ausdrückliche Wahlmöglichkeit, sich Inhalte von Anzeigen mit Prämie als Gegenleistung für eine Prämie anzusehen. Mit Prämie Anzeigen müssen immer von Google aktiviert werden.
Bei der Präsentation Ihrer Anzeige müssen Sie ein GADUserDidEarnRewardHandler
-Objekt angeben
für den Umgang mit der Prämie.
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");
}
}
FAQ
- Kann ich die Prämiendetails für die
GADRewardedAd
abrufen? - Ja, wenn Sie den Prämienbetrag vor dem
userDidEarnReward
-Rückruf benötigen ausgelöst wird,GADRewardedAd
hat eineadReward
Property, 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 diestartWithCompletionHandler:
-Methode verwenden, auch wenn ein Vermittlungsnetzwerk die Initialisierung abgeschlossen. - Was passiert, wenn einige Vermittlungsnetzwerke nicht bereit sind, wenn ich den Initialisierungs-Callback erhalte?
Wir empfehlen, eine Anzeige im
GADInitializationCompletionHandler
Auch wenn ein Vermittlungsnetzwerk nicht bereit ist, fordert das Google Mobile Ads SDK das Werbenetzwerk weiterhin nach einer Anzeige an. Wenn also ein Die Initialisierung des Vermittlungsnetzwerks ist nach dem Zeitlimit abgeschlossen, es kann jedoch weiterhin für zukünftige Anzeigenanfragen in dieser Sitzung.Sie können den Initialisierungsstatus aller Adapter durchgehend abfragen App-Sitzung durch Aufrufen von
GADMobileAds.initializationStatus
.- Wie finde ich heraus, warum ein bestimmtes Vermittlungsnetzwerk nicht bereit ist?
Die Eigenschaft
description
einesGADAdapterStatus
-Objekts beschreibt, warum ein Der Adapter ist nicht für die Bearbeitung von Anzeigenanfragen bereit.- Wird der Abschluss-Handler
userDidEarnRewardHandler
immer vor der DelegatmethodeadDidDismissFullScreenContent:
aufgerufen? Bei Google Ads erfolgen alle
userDidEarnRewardHandler
-Aufrufe. vor demadDidDismissFullScreenContent:
. Für Anzeigen, die über mediation, das Drittanbieter-Werbenetzwerk Die Callback-Reihenfolge wird von der Implementierung des SDKs bestimmt. Für Werbenetzwerk-SDKs, die eine einzelne delegierte Methode mit Prämieninformationen bereitstellen, kann der Vermittlungsadapter RuftuserDidEarnRewardHandler
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