준비
프로젝트를 Unity Ads에 연결(연결하는 방법은?)
유니티 게이밍 서비스 대시보드에서 프로젝트의 게임 ID 찾아두기
Unity Ads Listeners
리스너? 어떤 이벤트가 발생했을 때 해당 이벤트를 감지하고 처리하는 인터페이스
Unity Ads에서는 세 가지 리스너를 제공하는데,
이들은 초기화 결과, 광고 로드 결과, 그리고 광고 보여주기 결과와 관련된 이벤트를 처리한다.
초기화 결과 관련 리스너: IUnityAdsInitializationListener
OnInitializationComplete()
: Unity Ads 초기화가 완료되었을 때 호출된다.
이 메서드는 초기화가 성공적으로 완료된 후에 실행되는 코드를 담는다.
OnInitializationFailed(UnityAdsInitializationError error, string message)
: Unity Ads 초기화에 실패했을 때 호출된다.
이 메서드는 초기화 실패 시에 실행되는 코드를 담는다.
error 매개변수는 초기화 오류 유형을 나타내고, message 매개변수는 오류에 대한 추가적인 설명을 제공한다.
광고 로드 결과 관련 리스너: IUnityAdsLoadListener
OnUnityAdsAdLoaded(string adUnitId)
: 광고가 성공적으로 로드되었을 때 호출된다.
이 메서드는 로드된 광고의 adUnitId를 인자로 받는다.
OnUnityAdsFailedToLoad(string adUnitId, UnityAdsLoadError error, string message)
: 광고 로드에 실패했을 때 호출된다.
이 메서드는 로드 실패 시에 실행되는 코드를 담는다.
adUnitId는 로드를 시도한 광고의 단위 ID를 나타내고,
error 매개변수는 로드 오류 유형을 나타내며, message 매개변수는 오류에 대한 추가적인 설명을 제공한다.
광고 보여주기 결과 관련 리스너: IUnityAdsShowListener
OnUnityAdsShowFailure(string adUnitId, UnityAdsShowError error, string message)
: 광고 보여주기가 실패했을 때 호출된다.
이 메서드는 광고 보여주기 실패 시에 실행되는 코드를 담는다.
adUnitId는 보여주기를 시도한 광고의 단위 ID를 나타내고, error 매개변수는 보여주기 오류 유형을 나타내며, message 매개변수는 오류에 대한 추가적인 설명을 제공한다.
OnUnityAdsShowStart(string adUnitId)
: 광고 보여주기가 시작되었을 때 호출된다.
이 메서드는 광고 보여주기 시작 시에 실행되는 코드를 담는다.
OnUnityAdsShowClick(string adUnitId)
: 광고를 클릭했을 때 호출된다. 이 메서드는 광고 클릭 시에 실행되는 코드를 담는다.
OnUnityAdsShowComplete(string adUnitId, UnityAdsShowCompletionState showCompletionState)
: 광고 보여주기가 완료되었을 때 호출된다.
이 메서드는 광고 보여주기 완료 시에 실행되는 코드를 담는다.
adUnitId는 보여주기를 시도한 광고의 단위 ID를 나타내고,
showCompletionState 매개변수는 보여주기 완료 상태를 나타낸다.
Unity에서는 리스너의 모든 메서드를 구현하도록 권장하는데,
이는 필요한 이벤트를 정확히 처리하고 광고 서비스와의 통신을 원활하게 하기 위해서라고 한다.
따라서 모든 리스너 메서드를 구현하는 것이 좋겠다.
RewardedAdDisplay 스크립트 만들기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Advertisements;
public class RewardedAdDisplay : MonoBehaviour, IUnityAdsInitializationListener, IUnityAdsLoadListener, IUnityAdsShowListener
{
public string myGameIdAndroid = "YOUR_GAME_ID_HERE";
public string myGameIdIOS = "YOUR_GAME_ID_HERE";
public string adUnitIdAndroid = "Rewarded_Android";
public string adUnitIdIOS = "Rewarded_iOS";
public string myAdUnitId;
public string myAdStatus = "";
public bool adStarted;
public bool adCompleted;
private bool testMode = true;
void Start()
{
#if UNITY_IOS
Advertisement.Initialize(myGameIdIOS, testMode, this);
myAdUnitId = adUnitIdIOS;
#else
Advertisement.Initialize(myGameIdAndroid, testMode, this);
myAdUnitId = adUnitIdAndroid;
#endif
}
public void OnInitializationComplete()
{
Debug.Log("Unity Ads initialization complete.");
Advertisement.Load(myAdUnitId,this);
}
public void OnInitializationFailed(UnityAdsInitializationError error, string message)
{
myAdStatus = message;
Debug.Log($"Unity Ads Initialization Failed: {error.ToString()} - {message}");
}
public void OnUnityAdsAdLoaded(string adUnitId)
{
Debug.Log("Ad Loaded: " + adUnitId);
if (!adStarted)
{
Advertisement.Show(myAdUnitId,this);
}
}
public void OnUnityAdsFailedToLoad(string adUnitId, UnityAdsLoadError error, string message)
{
myAdStatus = message;
Debug.Log($"Error showing Ad Unit {adUnitId}: {error.ToString()} - {message}");
}
public void OnUnityAdsShowFailure(string adUnitId, UnityAdsShowError error, string message)
{
myAdStatus = message;
Debug.Log($"Error showing Ad Unit {adUnitId}: {error.ToString()} - {message}");
}
public void OnUnityAdsShowStart(string adUnitId)
{
adStarted = true;
Debug.Log("Ad Started: " + adUnitId);
}
public void OnUnityAdsShowClick(string adUnitId)
{
Debug.Log("Ad Clicked: " + adUnitId);
}
public void OnUnityAdsShowComplete(string adUnitId, UnityAdsShowCompletionState showCompletionState)
{
adCompleted = showCompletionState == UnityAdsShowCompletionState.COMPLETED;
Debug.Log("Ad Completed: " + adUnitId);
}
}
OnInitializationFailed, OnUnityAdsFailedToLoad, OnUnityAdsShowFailure 메서드는
오류 메시지를 myAdStatus 변수에 전달한다.
OnUnityAdsShowComplete 메서드는 adCompleted 변수를 true로 설정하여
Scene을 실행할 때 Inspector에서 상태를 확인할 수 있다.
OnUnityAdsShowStart 메서드는 광고 표시 시도를 중지할 수 있도록 adStarted 변수를 true로 설정한다.
OnUnityAdsAdLoaded 메서드는 광고가 아직 표시되지 않은 한 준비가 되면 광고를 표시합니다.
앱에서 AdCompleted가 참인지 확인하고 그렇다면 플레이어에게 보상해야 한다.
유니티 공식 튜토리얼을 보고 요약 기록 하였습니다.
'유니티 개발 기술 > 수익화' 카테고리의 다른 글
인앱 구매(IAP) 기능 구현 (0) | 2023.07.18 |
---|---|
리텐션을 높이기 위한 방안 (0) | 2023.07.18 |
Unity Ads (0) | 2023.07.17 |