광고 게재위치 사용하기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이 가이드에서는 Google 모바일 광고 Unity 플러그인의 광고 게재위치 기능을 사용하여 앱을 위한 광고를 만들고 표시하는 방법을 보여줍니다.

기본 요건

Google 모바일 광고 SDK 초기화하기

광고를 로드하기 전에 Action<InitializationStatus> 콜백으로 MobileAds.Initialize()를 호출하여 모바일 광고 SDK를 초기화합니다. 이 작업은 앱 실행 시 한 번만 처리하면 됩니다.

using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    ...
    public void Start()
    {
        // Initialize the Mobile Ads SDK.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

광고 게재위치 만들기

Google 모바일 광고로 배너를 표시하려면 먼저 광고 게재위치를 만들고 구성해야 합니다. Unity 편집기의 Assets(애셋) > Google Mobile Ads(Google 모바일 광고) > Ad Placements(광고 게재위치)에서 배너 광고, 전면 광고 또는 보상형 광고 형식의 광고 게재위치를 선택할 수 있습니다. 그러면 세 개의 데모 광고 게재위치가 설정되어 사용할 준비가 됩니다.

새 광고 게재위치를 추가하려면 목록 끝에 있는 Add New Placement(새 게재위치 추가) 버튼을 클릭합니다. 검사기 보기에서 광고 게재위치를 구성할 수 있습니다.

광고 게재위치 구성

각 게재위치에는 다음과 같은 속성이 있습니다.

게재위치 이름
게재위치 이름입니다. 장면에 광고를 설정할 때 게재위치를 식별하는 데 사용됩니다.
광고 형식
배너 광고, 보상형 광고, 전면 광고가 있으며, 광고의 유형입니다.
광고 단위 ID
Android 및 iOS용 배너 광고 단위 ID를 제공합니다. 광고 단위 ID를 하나 이상 제공해야 합니다.
장면 전반에 걸쳐 유지
이 속성의 체크박스를 선택하면 장면이 변경되더라도 배너가 화면에 유지됩니다(DontDestroyOnLoad와 동일하게 동작).
자동 로드 사용 설정됨
이 속성의 체크박스를 선택하면 광고 게재위치와 연결된 장면이 로드될 때 광고도 자동으로 로드됩니다.

다음 스크린샷에서는 My Awesome Banner라는 이름의 광고 게재위치를 예시로 보여줍니다.

장면에 AdGameObject 추가하기

Unity 편집기의 GameObject > Google Mobile Ads(Google 모바일 광고)에서 배너 광고, 전면 광고 또는 보상형 광고 형식의 AdGameObject를 장면에 추가할 수 있습니다. 형식을 선택하여 활성 장면에 게재위치를 추가합니다.

AdGameObject를 장면에 추가하면 Unity 편집기의 계층 구조 보기에 광고를 나타내는 GameObject가 표시됩니다.

GameObject 자체의 이름을 변경하여 게재위치의 이름을 변경할 수 있습니다. 다음 스크린샷에서는 Banner Ad라는 이름의 AdGameObject를 예시로 보여줍니다.

AdGameObject 설정

검사기 보기의 Ad Game Object (Script) 구성요소 설정에서 장면의 AdGameObject를 구성할 수 있습니다.

광고 게재위치

구성된 게재위치의 드롭다운 목록에서 광고 게재위치를 선택합니다. 이 목록에는 올바른 형식의 광고 단위만 포함되어 있습니다. 예를 들어 배너 광고 게임 객체의 경우 드롭다운에는 설정된 배너 광고 게재위치만 표시됩니다.

BannerAdGameObject 구성(배너만 해당)

  • 크기: 사용하려는 배너의 크기를 선택합니다.
    • 앵커 적응형 배너에서는 다음과 같이 여러 옵션을 추가로 제공합니다.
      • 방향: 광고 높이를 계산하는 데 사용되는 기기 방향을 선택합니다.
      • 전체 화면 너비 사용 - 이 옵션을 선택하면 배너가 전체 화면 너비를 차지합니다. 전체 화면 너비 사용 옵션을 선택 해제하면 화면의 너비 비율을 조정(50~99%)할 수 있습니다.
    • 맞춤을 사용하면 배너 너비와 높이를 제공할 수 있습니다.
  • 광고 게재순위: 배너를 게재할 위치를 선택합니다.

콜백

광고 콜백에 해당하는 함수를 구현할 수 있습니다. 예를 들어 배너 광고가 로드되지 않는 경우를 처리하려면 다음 단계를 따르세요.

  1. 광고 콜백에서 사용할 수 있는 함수를 만듭니다.

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. 위의 함수가 포함된 스크립트를 장면의 GameObject에 연결합니다.

  3. + 버튼을 클릭한 다음 스크립트가 연결된 GameObject를 드래그 앤 드롭합니다.

  4. 광고 콜백에 연결하려는 함수를 선택합니다. 매개변수화된 광고 콜백의 경우 SDK에서 매개변수 값을 가져올 수 있도록 동적 변수를 수락하는 함수를 선택합니다.

스크립트의 AdGameObject 사용하기

스크립트에서 AdGameObject 인스턴스 가져오기

모든 AdGameObject 객체에는 편의 메서드 LoadAd()가 있습니다. 이 메서드는 타겟팅되지 않은 일반 AdRequest가 포함된 광고를 로드합니다. 타겟팅을 적용하려면 자체 구성된 광고 요청을 사용하는 LoadAd(AdRequest adRequest)를 사용해야 합니다.

AdGameObject의 인스턴스를 가져오려면 각 형식에 다음 메서드를 사용합니다.

MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

반환된 BannerAdGameObject 객체에는 편의 메서드인 Hide()Show()도 있습니다.

전면 광고

MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

반환된 InterstitialAdGameObject 객체에는 편의 메서드인 ShowIfLoaded()가 있습니다.

보상형 광고

MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

반환된 RewardedAdGameObject 객체에는 편의 메서드인 ShowIfLoaded()가 있습니다.

예를 들어 BannerAdGameObject의 인스턴스를 가져와서 다음과 같이 로드할 수 있습니다.

using UnityEngine;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class BannerTestScript : MonoBehaviour
{
    BannerAdGameObject bannerAd;

    void Start()
    {
        bannerAd = MobileAds.Instance
            .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

        bannerAd.LoadAd();
        ...
    }
    ...
}

BannerAd라는 BannerAdGameObject가 있는 경우에는 다음과 같이 인스턴스를 가져올 수 있습니다.

MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");

AdGameObject의 기본 광고 객체 액세스하기

이러한 스니펫에서는 AdGameObject와 연결된 기본 광고 객체에 액세스하는 방법을 보여줍니다.

BannerAdGameObject bannerAd = MobileAds.Instance
    .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

// Access BannerView object
BannerView bannerView = bannerAd.BannerView;

전면 광고

InterstitialAdGameObject interstitialAdGameObject = MobileAds.Instance
    .GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

// Access InterstitialAd object
InterstitialAd interstitialAd = interstitialAdGameObject.InterstitialAd;

보상형 광고

RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
    .Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;

예시

전면 광고 게재하기

다음은 AdGameObject를 사용하여 전면 광고를 로드하고 게재하도록 게임을 구성하는 방법의 예시입니다.

장면에 InterstitialAdGameObject를 추가한 후 장면 로드 시 광고가 자동으로 로드되도록 Auto Load Enabled(자동 로드 사용 설정됨) 기능을 켭니다.

다음으로 SDK를 초기화했는지 다음과 같이 확인합니다. SDK를 초기화하지 않은 경우에는 AdGameObject의 Auto Load(자동 로드) 기능이 작동하지 않습니다.

그런 다음 InterstitialAdGameObject.ShowIfLoaded() 함수를 호출하여 화면 전환 사이에 전면 광고를 게재합니다. 다음 코드에서는 장면 전환 사이에 전면 광고를 게재하는 예시를 보여줍니다.

using UnityEngine;
using UnityEngine.SceneManagement;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAd<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }

    public void OnClickShowGameSceneButton()
    {
        // Display an interstitial ad
        interstitialAd.ShowIfLoaded();

        // Load a scene named "GameScene"
        SceneManager.LoadScene("GameScene");
    }
}

광고 게재위치에서 자동 로드 기능을 사용 설정했으므로 광고를 명시적으로 요청할 필요가 없습니다. 장면이 변경되면 전면 광고가 준비된 경우 표시됩니다.

광고를 수동으로 요청하려면 광고 게재위치 검사기에서 자동 로드 기능을 사용 중지하고 InterstitialAdGameObject.LoadAd() 함수를 대신 호출하세요. 다음 코드 스니펫에서는 광고를 수동으로 요청하는 방법을 보여줍니다.

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAdGameObject<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("MobileAds initialized");

            // Load an interstitial ad after the SDK initialization is complete
            interstitialAd.LoadAd();
        });
    }
    ...
}

'보상형 광고 보기' 버튼 상태 처리하기

다음은 광고 게재위치를 사용하여 '보상형 광고 보기' 버튼을 사용 설정하는 방법의 예시입니다.

보상형 광고를 표시하는 데 사용될 Button GameObject(이 예에서는 이름이 Button임)를 장면에 추가합니다. 이 버튼은 보상형 광고를 사용할 수 있는 경우에만 제공됩니다.

Start() 메서드에서 버튼의 활성 상태를 false로 변경합니다. 그러면 버튼이 장면에서 사라집니다.

public class MainScene : MonoBehaviour
{
    ...
    void Start()
    {
        GameObject.Find("Button").SetActive(false);
        ...
    }
}

장면에 RewardedAdGameObject를 추가하고 드롭다운에서 AdMob Demo Rewarded Ad(AdMob 데모 보상형 광고) 광고 게재위치를 선택합니다.

RewardedAdGameObject 검사기의 콜백 섹션에서 On Ad Loaded()+ 버튼을 클릭하여 보상형 광고가 로드될 때 호출할 함수를 사용 설정합니다.

이전 단계에서 추가한 버튼 GameObject를 None (Object)(없음(객체)) 필드로 드래그 앤 드롭합니다. 드롭다운에서 호출할 함수를 선택합니다. No Function(함수 없음) > GameObject > SetActive(bool)를 클릭한 다음 true를 매개변수로 전송(SetActive(true) 호출)하도록 체크박스를 클릭합니다.

이 콜백 섹션에서 RewardedAd.OnUserEarnedReward 이벤트가 발생했을 때 호출되는 이벤트를 연결할 수도 있습니다. 자세한 내용은 이 섹션을 참고하세요.

다음으로, 클릭 시 보상형 광고가 표시되도록 버튼을 만듭니다. 버튼 검사기의 On Click() 콜백 섹션에서 + 버튼을 클릭하고 보상형 광고 게재위치 GameObject(이 예시에서는 이름이 Rewarded Ad임)를 None (Object)(없음(객체)) 필드로 드래그 앤 드롭합니다.

그런 다음 RewardedAdGameObject.ShowIfLoaded() 함수를 버튼의 On Click() 콜백에 연결합니다.

마지막으로, SDK를 반드시 초기화해야 합니다. 다음 코드 스니펫은 이 예시에서 사용된 장면의 전체 코드입니다.

using UnityEngine;

using GoogleMobileAds.Api;

public class MainScene : MonoBehaviour
{
    void Start()
    {
        GameObject.Find("Button").SetActive(false);

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }
}

프로젝트를 실행하면 보상형 광고가 로드되어 표시될 준비가 된 시점에 장면에 버튼이 표시됩니다.

RewardedAdGameObject의 보상형 콜백 구성하기

다음은 콜백 함수가 호출될 때 사용자에게 보상을 제공하도록 보상형 광고 게재위치에 보상형 콜백을 구성하는 방법의 예시입니다.

새 스크립트를 만들고 다음과 같이 Reward를 매개변수로 허용하는 함수를 정의합니다.

using UnityEngine;
using GoogleMobileAds.Api;

class RewardedTestScript : MonoBehaviour {
    ...
    public void OnUserEarnedReward(Reward reward) {
        Debug.Log("OnUserEarnedReward: reward=" +
            reward.Type + ", amount=" + reward.Amount);
    }
    ...
}

RewardedTestScript 스크립트를 장면의 모든 GameObject(Ad Placement GameObject 제외)에 연결합니다. 이 예시에서는 메인 카메라 GameObject에 연결되어 있습니다.

장면에 RewardedAdGameObject를 추가합니다. 그런 다음 RewardedAdGameObject 검사기의 콜백 섹션에서 On User Earned Reward (Reward)+ 버튼을 클릭하여 사용자에게 보상이 주어질 때 호출할 함수를 사용 설정합니다.

이전 단계에서 추가한 기본 카메라 GameObject를 None (Object)(없음(객체)) 필드로 드래그 앤 드롭합니다. 드롭다운에서 호출할 함수를 선택합니다. No Function(함수 없음) > RewardedTestScript > OnUserEarnedReward를 클릭합니다.

프로젝트를 실행하고 보상형 광고를 시청하면 광고와의 상호작용에 대한 보상을 받을 때 RewardedTestScript.OnUserEarnedReward()가 호출됩니다.