Anzeigen mit Prämie

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

Im Folgenden sind die wichtigsten Schritte zum Einbinden von Interstitial-Anzeigen mit Prämie aufgeführt:

  • 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");
  }
}

Häufig gestellte Fragen

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, hat GADRewardedAd die Eigenschaft adReward, 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 Methode startWithCompletionHandler: 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 eines GADAdapterStatus-Objekts beschreibt, warum ein Adapter nicht bereit ist, Anzeigenanfragen zu verarbeiten.

Wird der Abschluss-Handler userDidEarnRewardHandler immer vor der Delegatmethode adDidDismissFullScreenContent: aufgerufen?

Bei Google Ads erfolgen alle userDidEarnRewardHandler-Aufrufe vor adDidDismissFullScreenContent:. 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 Vermittlungsadapter userDidEarnRewardHandler vor dem adDidDismissFullScreenContent: auf.

Beispiele auf GitHub

Nächste Schritte

Weitere Informationen zum Datenschutz für Nutzer