보상형 전면 광고

보상형 전면 광고는 자연스러운 앱 전환 중에 자동으로 게재되는 광고에 대해 보상을 제공하는 인센티브형 광고 형식입니다. 보상형 광고와 달리 사용자는 수신 동의하지 않고도 보상형 전면 광고를 볼 수 있습니다.

기본 요건

  • Unity 플러그인 5.4.0 이상

구현

보상형 전면 광고를 통합하는 기본 단계는 아래와 같습니다.

  1. 광고를 로드합니다.
  2. 광고를 표시하고 보상 이벤트를 처리합니다.
  3. 광고 이벤트 콜백을 사용합니다.

광고 로드

광고는 RewardedInterstitialAd 클래스의 정적 LoadAd() 메서드를 사용하여 로드됩니다. 로드 메서드에는 광고 단위 ID, AdRequest 객체, 광고 로드에 성공하거나 실패할 때 호출되는 완료 핸들러가 필요합니다. 로드된 RewardedInterstitialAd 객체는 완료 핸들러의 매개변수로 제공됩니다. 아래는 RewardedInterstitialAd를 로드하는 방법의 예입니다.

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedInterstitialAd rewardedInterstitialAd;
    ...

    public void Start()
    {
        ...

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        RewardedInterstitialAd.LoadAd(adUnitId, request, adLoadCallback);
    }

    private void adLoadCallback(RewardedInterstitialAd ad, string error)
    {
        if (error == null)
        {
            rewardedInterstitialAd = ad;
        }
    }
}

광고 표시 및 보상 이벤트 처리

광고를 표시할 때 사용자의 보상을 처리할 콜백을 제공해야 합니다.

다음 코드는 보상형 전면 광고를 게재하기 위한 최적의 메서드를 나타냅니다.

public void ShowRewardedInterstitialAd()
{
    if (rewardedInterstitialAd != null)
    {
        rewardedInterstitialAd.Show(userEarnedRewardCallback);
    }
}

private void userEarnedRewardCallback(Reward reward)
{
    // TODO: Reward the user.
}

광고 이벤트 콜백 사용

광고의 작동 방식을 추가로 맞춤설정하려는 경우 다양한 이벤트를 활용할 수 있습니다. 적절한 이벤트 핸들러에 대한 대리자를 등록하여 이러한 이벤트를 수신합니다.

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedInterstitialAd rewardedInterstitialAd;
    ...

    public void Start()
    {
        ...

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        RewardedInterstitialAd.LoadAd(adUnitId, request, adLoadCallback);
    }

    private void adLoadCallback(RewardedInterstitialAd ad, string error)
    {
        if (error == null)
        {
            rewardedInterstitialAd = ad;

            rewardedInterstitialAd.OnAdFailedToPresentFullScreenContent += HandleAdFailedToPresent;
            rewardedInterstitialAd.OnAdDidPresentFullScreenContent += HandleAdDidPresent;
            rewardedInterstitialAd.OnAdDidDismissFullScreenContent += HandleAdDidDismiss;
            rewardedInterstitialAd.OnPaidEvent += HandlePaidEvent;
        }
    }

    private void HandleAdFailedToPresent(object sender, AdErrorEventArgs args)
    {
        MonoBehavior.print("Rewarded interstitial ad has failed to present.");
    }

    private void HandleAdDidPresent(object sender, EventArgs args)
    {
        MonoBehavior.print("Rewarded interstitial ad has presented.");
    }

    private void HandleAdDidDismiss(object sender, EventArgs args)
    {
        MonoBehavior.print("Rewarded interstitial ad has dismissed presentation.");
    }

    private void HandlePaidEvent(object sender, AdValueEventArgs args)
    {
        MonoBehaviour.print(
            "Rewarded interstitial ad has received a paid event.");
    }
}