Anzeigen mit Prämie

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 Ad Manager in einer iOS-App.

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:

/6499/example/rewarded

Sie wurde speziell so konfiguriert, dass bei jeder Anfrage Testanzeigen zurückgegeben werden. können Sie es beim Programmieren, Testen und Debuggen kostenlos 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, GAMRequest-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: "/6499/example/rewarded", request: GAMRequest())
    } 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 {
  GAMRequest *request = [GAMRequest request];
  [GADRewardedAd
      loadWithAdUnitID:@"/6499/example/rewarded"
                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 Bestätigungs-Callbacks sollte 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: "/6499/example/rewarded", request: GAMRequest())
  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:@"/6499/example/rewarded"
              request:[GAMRequest 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: "/6499/example/rewarded", request: GAMRequest())
      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 {
  GAMRequest *request = [GAMRequest 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 eine adReward 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 wurden dem startWithCompletionHandler:-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 eines GADAdapterStatus-Objekts beschreibt, warum ein Der Adapter ist nicht für die Bearbeitung von Anzeigenanfragen bereit.

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

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

Beispiele auf GitHub

Nächste Schritte

Weitere Informationen zum Datenschutz für Nutzer