Reklamy z nagrodą

Reklamy z nagrodą to reklamy, z którymi użytkownicy mogą w zamian wejść w interakcję za nagrody w aplikacji. Z tego przewodnika dowiesz się, jak zintegrować reklamy z nagrodą z z AdMob w aplikację na Unity.

Ten przewodnik wyjaśnia, jak zintegrować reklamy z nagrodą z aplikacją na platformie Unity.

Wymagania wstępne

Zawsze korzystaj z reklam testowych

Ten przykładowy kod zawiera identyfikator jednostki reklamowej, którego możesz użyć do przesłania żądania reklam testowych. Został on skonfigurowany tak, aby wyświetlać reklamy testowe, a nie aby tworzyć bezpieczne reklamy dla każdego żądania.

Jeśli jednak zarejestrujesz aplikację w Interfejs internetowy Ad Managera i utworzona własną jednostkę reklamową Identyfikatory do wykorzystania w aplikacji; jawnie skonfiguruj urządzenie jako testowe urządzenia w trakcie w Google Cloud.

/6499/example/rewarded

Zainicjowanie pakietu SDK do reklam mobilnych

Przed wczytaniem reklam poproś aplikację o zainicjowanie pakietu SDK do reklam mobilnych, wywołując MobileAds.Initialize() Wystarczy to zrobić tylko raz, najlepiej podczas uruchamiania aplikacji.

using GoogleMobileAds;
using GoogleMobileAds.Api;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus initStatus) =>
        {
            // This callback is called once the MobileAds SDK is initialized.
        });
    }
}

Jeśli korzystasz z zapośredniczenia, poczekaj, aż nastąpi wywołanie zwrotne, zanim wczytasz reklamy jako Dzięki temu wszystkie adaptery zapośredniczenia zostaną zainicjowane.

Implementacja

Oto główne etapy integracji z reklamami z nagrodą:

  1. Wczytaj reklamę z nagrodą
  2. [Opcjonalnie] Weryfikacja wywołań zwrotnych weryfikacji po stronie serwera (SSV)
  3. Pokaż reklamę z nagrodą z wywołaniem zwrotnym nagrody
  4. Odsłuchaj zdarzenia reklamy z nagrodą
  5. Wyczyść reklamę z nagrodą
  6. Wstępnie wczytaj następną reklamę z nagrodą

Wczytaj reklamę z nagrodą

Reklamę z nagrodą można wczytać za pomocą statycznej metody Load() na stronie RewardedAd zajęcia. Wczytany obiekt RewardedAd jest przesyłany jako w module obsługi uzupełniania. Poniższy przykład pokazuje, jak wczytać RewardedAd


  // This ad unit is configured to always serve test ads.
  private string _adUnitId = "/6499/example/rewarded";

  private RewardedAd _rewardedAd;

  /// <summary>
  /// Loads the rewarded ad.
  /// </summary>
  public void LoadRewardedAd()
  {
      // Clean up the old ad before loading a new one.
      if (_rewardedAd != null)
      {
            _rewardedAd.Destroy();
            _rewardedAd = null;
      }

      Debug.Log("Loading the rewarded ad.");

      // create our request used to load the ad.
      var adRequest = new AdManagerAdRequest();

      // send the request to load the ad.
      RewardedAd.Load(_adUnitId, adRequest,
          (RewardedAd ad, LoadAdError error) =>
          {
              // if error is not null, the load request failed.
              if (error != null || ad == null)
              {
                  Debug.LogError("Rewarded ad failed to load an ad " +
                                 "with error : " + error);
                  return;
              }

              Debug.Log("Rewarded ad loaded with response : "
                        + ad.GetResponseInfo());

              _rewardedAd = ad;
          });
  }

[Opcjonalnie] Weryfikacja wywołań zwrotnych weryfikacji po stronie serwera (SSV)

aplikacje, które wymagają dodatkowych danych podczas weryfikacji po stronie serwera; Wywołania zwrotne powinny korzystać z funkcji danych niestandardowych reklam z nagrodą. Każda wartość ciągu znaków ustawiona w obiekcie reklamy z nagrodą jest przekazywana do funkcji custom_data parametru zapytania wywołania zwrotnego SSV. Jeśli nie zostanie ustawiona żadna niestandardowa wartość danych, parametr Wartości parametru zapytania custom_data nie będzie w wywołaniu zwrotnym SSV.

Poniższy przykładowy kod pokazuje, jak ustawić opcje SSV po tagu reklama z nagrodą została wczytana.

// send the request to load the ad.
RewardedAd.Load(_adUnitId, adRequest, (RewardedAd ad, LoadAdError error) =>
{
    // If the operation failed, an error is returned.
    if (error != null || ad == null)
    {
        Debug.LogError("Rewarded ad failed to load an ad with error : " + error);
        return;
    }

    // If the operation completed successfully, no error is returned.
    Debug.Log("Rewarded ad loaded with response : " + ad.GetResponseInfo());

    // Create and pass the SSV options to the rewarded ad.
    var options = new ServerSideVerificationOptions
                          .Builder()
                          .SetCustomData("SAMPLE_CUSTOM_DATA_STRING")
                          .Build()
    ad.SetServerSideVerificationOptions(options);

});

Jeśli chcesz ustawić niestandardowy ciąg nagrody, musisz to zrobić przed wyświetleniem reklama.

Pokaż reklamę z nagrodą z wywołaniem zwrotnym nagrody

Podczas wyświetlania reklamy musisz podać wywołanie zwrotne w celu obsłużenia nagrody użytkownika. Reklamy mogą być wyświetlane tylko raz na wczytanie. Użyj metody CanShowAd() do: sprawdzić, czy reklama jest gotowa do wyświetlenia.

Poniższy kod przedstawia najlepszą metodę wyświetlania reklamy z nagrodą.

public void ShowRewardedAd()
{
    const string rewardMsg =
        "Rewarded ad rewarded the user. Type: {0}, amount: {1}.";

    if (rewardedAd != null && rewardedAd.CanShowAd())
    {
        rewardedAd.Show((Reward reward) =>
        {
            // TODO: Reward the user.
            Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount));
        });
    }
}

Odsłuchaj zdarzenia reklamy z nagrodą

Aby jeszcze bardziej dostosować działanie swojej reklamy, możesz wykorzystać różne zdarzenia w cyklu życia reklamy: otwieranie, zamykanie itd. Posłuchaj: te wydarzenia po zarejestrowaniu przedstawiciela, jak pokazano poniżej.

private void RegisterEventHandlers(RewardedAd ad)
{
    // Raised when the ad is estimated to have earned money.
    ad.OnAdPaid += (AdValue adValue) =>
    {
        Debug.Log(String.Format("Rewarded ad paid {0} {1}.",
            adValue.Value,
            adValue.CurrencyCode));
    };
    // Raised when an impression is recorded for an ad.
    ad.OnAdImpressionRecorded += () =>
    {
        Debug.Log("Rewarded ad recorded an impression.");
    };
    // Raised when a click is recorded for an ad.
    ad.OnAdClicked += () =>
    {
        Debug.Log("Rewarded ad was clicked.");
    };
    // Raised when an ad opened full screen content.
    ad.OnAdFullScreenContentOpened += () =>
    {
        Debug.Log("Rewarded ad full screen content opened.");
    };
    // Raised when the ad closed full screen content.
    ad.OnAdFullScreenContentClosed += () =>
    {
        Debug.Log("Rewarded ad full screen content closed.");
    };
    // Raised when the ad failed to open full screen content.
    ad.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Rewarded ad failed to open full screen content " +
                       "with error : " + error);
    };
}

Wyczyść reklamę z nagrodą

Po zakończeniu pracy nad funkcją RewardedAd pamiętaj, by wywołać funkcję Destroy() :

_rewardedAd.Destroy();

Wtyczka powiadomi wtyczkę, że obiekt nie jest już używany, a także jego pamięć można odzyskać. Niewywołanie tej metody może spowodować wycieki pamięci.

Wstępnie wczytaj następną reklamę z nagrodą

RewardedAd to obiekt jednorazowego użytku. Oznacza to, że po wyświetleniu reklamy z nagrodą obiektu nie będzie można ponownie użyć. Aby wysłać żądanie kolejnej reklamy z nagrodą: musisz utworzyć nowy obiekt RewardedAd.

Aby przygotować reklamę z nagrodą pod kątem następnego wyświetlenia, wczytaj wstępnie element reklama z nagrodą po OnAdFullScreenContentClosed lub Zgłoszono OnAdFullScreenContentFailed zdarzenie reklamowe.

private void RegisterReloadHandler(RewardedAd ad)
{
    // Raised when the ad closed full screen content.
    ad.OnAdFullScreenContentClosed += () =>
    {
        Debug.Log("Rewarded Ad full screen content closed.");

        // Reload the ad so that we can show another as soon as possible.
        LoadRewardedAd();
    };
    // Raised when the ad failed to open full screen content.
    ad.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Rewarded ad failed to open full screen content " +
                       "with error : " + error);

        // Reload the ad so that we can show another as soon as possible.
        LoadRewardedAd();
    };
}

Dodatkowe materiały