Youtube 리뷰

Unity Mediation SDK 를 설치해 보자

AllGameDev 2022. 2. 9. 15:53
728x90
반응형

어제 Unity Youtube 채널에서 새로운 컨텐츠가 업로드 되어 리뷰해 보도록 하겠습니다.

Unity Mediation 이란 툴인데 한국말로 중개라는 뜻입니다.

광고를 중개하는 의미인 것 같습니다.

먼저 영상을 보고 제 게임에 그대로 설치해 보도록 하겠습니다.

https://www.youtube.com/watch?v=useuVhrLfWM 

Youtube에서 자막 자동을 하면 한국말로 보실 수 있습니다.

자막 영어>>한국어

광고는 게임 진행에 방해를 하지 말아야 합니다. 

그리고 개발자는 광고 수익을 최적화 해아 합니다.

다양한 광고 네트워크 SDK를 모두 게임에 통합 관리하는 방법을 찾아야 하는 이유이유입니다.

Mediation은 여러 광고 네트워크를 통합하는 방법을 제시합니다.

 

먼저 Mediation을 설치합니다.

https://unity.com/products/mediation?utm_source=youtube&utm_medium=social&utm_campaign=cloud_global_generalpromo_2021-09-15_mediation 

 

Mediationᴮᴱᵀᴬ

Increase ad demand from top networks by driving more competition for player’s attention and higher yield for your game.

unity.com

여기서 Get the Mediation SDK 선택합니다.

 

https://docs.unity.com/mediation/MediationSetupChecklist.html?_gl=1*eg1rhg*_gcl_dc*R0NMLjE2Mzc0NTAyMDUuQ0pTNmhxMkpxUFFDRlJRSWxnb2RtRlVPMmc.&_ga=2.118966912.862074116.1644313605-480728218.1618006647 

 

Unity Mediation Setup checklist

Unity Mediation Setup checklist Follow this checklist to install, set up, and use Unity Mediation (Beta) in your app. After downloading the latest version of the Unity Mediation SDK (Beta), you can also refer to the following videos to: Install and config

docs.unity.com

다음 다운로드 링크로 Unity Mediation SDK를 다운받습니다.

Mediation 설치 방법
Add package from tarball 선택
tarball 선택

다음과 같이 Package Manager에 설치되었습니다.

Mediation 0.4.0-preview.1

이제 유니티 대쉬보드에 들어갑니다.

https://dashboard.unity3d.com/

 

Unity Gaming Services

 

dashboard.unity3d.com

로그인 후에 Projects를 생성합니다. Mediation으로 생성해 보겠습니다.

Mediation 프로젝트 생성
Unity Mediation 선택
Mediation 메인 화면

이제 유니티 에디터로 돌아와서 Project Setting에서 계정을 연결합니다.

유니티 에디터에서 계정 연결

Mediation의 프로젝트 셋팅 화면입니다.

다음과 광고 채널을 통합하여 관리 할 수 있습니다.

Mediation 사용 

여기에 해당하는 코드를 생성할 수 있습니다. 아래로 내려서 Open Code Generator를 선택합니다.

메인 창에 표시되니 잘 확인해 보시기 바랍니다.

Open Code Generator 선택

using System;
using Unity.Services.Core;
using Unity.Services.Mediation;
using UnityEngine;

namespace Unity.Example
{
    public class InterstitialAdExample
    {
        IInterstitialAd ad;
        string adUnitId = "Interstitial_XXXXXXX";
        string gameId = "XXXXXX";

        public async void InitServices()
        {
            try
            {
                InitializationOptions initializationOptions = new InitializationOptions();
                initializationOptions.SetGameId(gameId);
                await UnityServices.InitializeAsync(initializationOptions);

                InitializationComplete();
            }
            catch (Exception e)
            {
                InitializationFailed(e);
            }
        }

        public void SetupAd()
        {
            //Create
            ad = MediationService.Instance.CreateInterstitialAd(adUnitId);

            //Subscribe to events
            ad.OnLoaded += AdLoaded;
            ad.OnFailedLoad += AdFailedLoad;

            ad.OnShowed += AdShown;
            ad.OnFailedShow += AdFailedShow;
            ad.OnClosed += AdClosed;
            ad.OnClicked += AdClicked;
            
            // Impression Event
            MediationService.Instance.ImpressionEventPublisher.OnImpression += ImpressionEvent;
        }

        public void ShowAd()
        {
            if (ad.AdState == AdState.Loaded)
            {
                ad.Show();
            }
        }

        void InitializationComplete()
        {
            SetupAd();
            ad.Load();
        }

        void InitializationFailed(Exception e)
        {
            Debug.Log("Initialization Failed: " + e.Message);
        }

        void AdLoaded(object sender, EventArgs args)
        {
            Debug.Log("Ad loaded");
        }

        void AdFailedLoad(object sender, LoadErrorEventArgs args)
        {
            Debug.Log("Failed to load ad");
            Debug.Log(args.Message);
        }

        void AdShown(object sender, EventArgs args)
        {
            Debug.Log("Ad shown!");
        }

        void AdClosed(object sender, EventArgs e)
        {
            // Pre-load the next ad
            ad.Load();
            Debug.Log("Ad has closed");
            // Execute logic after an ad has been closed.
        }

        void AdClicked(object sender, EventArgs e)
        {
            Debug.Log("Ad has been clicked");
            // Execute logic after an ad has been clicked.
        }

        void AdFailedShow(object sender, ShowErrorEventArgs args)
        {
            Debug.Log(args.Message);
        }

        void ImpressionEvent(object sender, ImpressionEventArgs args)
        {
            var impressionData = args.ImpressionData != null ? JsonUtility.ToJson(args.ImpressionData, true) : "null";
            Debug.Log("Impression event from ad unit id " + args.AdUnitId + " " + impressionData);
        }
        
    }
}

코드를 입력해 봤는데 광고가 표시되지 않네요..

해결책을 아직 못 찾음. 혹시 찾으신분 있으면 연락주세요.

728x90
반응형