Reklamy z nagrodą

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

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

Wymagania wstępne

Zawsze korzystaj z reklam testowych

Poniższy przykładowy kod zawiera identyfikator jednostki reklamowej, którego możesz użyć do wysłania żądania reklam testowych. Został on specjalnie skonfigurowany tak, aby w przypadku każdego żądania zwracać reklamy testowe zamiast reklam produkcyjnych, dzięki czemu można z niego korzystać.

Gdy jednak zarejestrujesz aplikację wAd Manager interfejsie internetowym i utworzysz własne identyfikatory jednostek reklamowych do wykorzystania w niej, podczas jej tworzenia skonfiguruj urządzenie jako urządzenie testowe.

/6499/example/rewarded

Inicjowanie pakietu SDK do reklam mobilnych

Przed wczytaniem reklam Twoja aplikacja musi zainicjować pakiet SDK do reklam mobilnych, wywołując MobileAds.Initialize(). Wystarczy to zrobić tylko raz, najlepiej przy uruchomieniu 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 używasz zapośredniczenia, poczekaj z załadowaniem reklam na wywołanie zwrotne, ponieważ 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() w klasie RewardedAd. Wczytany obiekt RewardedAd jest dostarczany jako parametr w module obsługi uzupełniania. Przykład poniżej 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 w wywołaniach zwrotnych weryfikacji po stronie serwera, powinny używać funkcji danych niestandardowych reklam z nagrodą. Każda wartość ciągu znaków ustawiona w obiekcie reklamy z nagrodą jest przekazywana do parametru zapytania custom_data w wywołaniu zwrotnym SSV. Jeśli nie ustawisz niestandardowych wartości danych, wartość parametru zapytania custom_data nie będzie widoczna w wywołaniu zwrotnym SSV.

Poniższy przykładowy kod pokazuje, jak ustawić opcje SSV po wczytaniu reklamy z nagrodą.

// 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 reklamy.

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

Podczas wyświetlania reklamy musisz podać wywołanie zwrotne w celu obsłużenia nagrody dla użytkownika. Reklamy mogą być wyświetlane tylko raz na wczytanie. Użyj metody CanShowAd(), aby 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 reklamy, możesz uwzględnić kilka zdarzeń w jej cyklu życia: otwarcie, zamknięcie itp. Nasłuchuj tych zdarzeń, rejestrując przedstawiciela w sposób pokazany 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ą

Gdy skończysz korzystać z RewardedAd, pamiętaj, by przed przeniesieniem do niego odwołania wywołać metodę Destroy():

_rewardedAd.Destroy();

Wtyczka powiadomi wtyczkę, że obiekt nie jest już używany, a zajmowaną przez niego 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 jednorazowy. Oznacza to, że po wyświetleniu reklamy z nagrodą nie będzie można ponownie użyć obiektu. Aby poprosić o kolejną reklamę z nagrodą, musisz utworzyć nowy obiekt RewardedAd.

Aby przygotować reklamę z nagrodą na następne wyświetlenie, wczytaj ją wstępnie po wywołaniu zdarzenia reklamowego OnAdFullScreenContentClosed lub OnAdFullScreenContentFailed.

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