Google AdMob을 사용해 내가 만들고 있는 유니티 앱에 광고를 넣을 수 있다.
크게 어렵지 않아서 따라 해 보면 바로 광고가 나오는 것을 확인할 수 있을 것이다.
우선 첫 번째로 구글 애드몹을 알아야 한다.
1. 구글 애드몹에 가입을 한다.
2. 구글 애드몹에 자신의 어플을 등록시켜 준다.
3. 광고단위를 클릭하고 자신에게 필요한 광고 단위를 선택해 생성해 준다. 나의 경우 전면 광고를 선택해 주었다.
광고 단위 추가 버튼을 통해서 필요한 광고를 추가해 줄 수 있다.
자신의 앱 ID는 알아둬야 하니 복사 필수
>> 앱 ID는 두 군데서 확인 가능하다. 1번째로 앱 >> 모든 앱 >> 앱 ID.
>> 두 번째로 앱설정에서 앱 ID 확인. 편한 곳에서 확인하고 알아두도록 하자.
자신의 광고 단위 ID도 알아둬야 됨.
여기서 저 광고 단위 ID가 중요하다. 일단 적어두거나 다른 곳에 복사해 두자. 나중에 스크립트에서 사용할 것이다.
이제 구글 애드몹에서 해줄 내용은 끝이 났다.
두 번째로 유니티 플러그인을 설치해 주자.
1. 유니티 플러그인으로 Google Mobile Ads Unity Plugin을 받아 설치해 주자.
(아래 링크 참고, 블로그에 적어 둘 당시 이게 최신 같아 보였다. 더 최신 버전이 있다면 선택해서 설치하자.)
https://github.com/googleads/googleads-mobile-unity/releases/tag/v9.3.0
설치하고 난 뒤에 유니티에서 열어주자. 다 설치가 되면 Assets >> GoogleMobile Ads >>Settings을 누르고 Inspector 창에서 아까 첫 번째로 기억해 뒀던 자신의 Google Mobile Ads App ID를 적어주자.
이제부터가 중요하다.
코드를 써보자. 물론 우리에게는 다행히 도움의 손길이 있다.
https://developers.google.com/admob/unity/interstitial?hl=ko
광고들 마다 어떻게 사용해야 하는지 친절하게 설명해 준다. 역시나 필요한 걸 찾아서 사용하자.
https://developers.google.com/admob/unity/rewarded?hl=ko
나의 경우 전면 광고였으니 위에 나와있는 도움의 손길을 토대로 그대로 따라 해 주자.
나의 경우 광고매니저 오브젝트를 만들어 스크립트를 하나 추가해주었다. 그대로 써주자.
using GoogleMobileAds;
using GoogleMobileAds.Api;
using System;
using UnityEngine;
// https://developers.google.com/admob/unity/interstitial?hl=ko 참고
public class GoogleMobileAdsScript : MonoBehaviour
{
public GoogleMobileAdsScript instance;
private InterstitialAd _interstitialAd;
// These ad units are configured to always serve test ads.
//자신의 광고단위ID 넣어주기
#if UNITY_ANDROID
//private string _adUnitId = "";
private string _adUnitId = "";
#elif UNITY_IPHONE
// private string _adUnitId = "";
#else
private string _adUnitId = "unused";
#endif
public void Awake()
{
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize((InitializationStatus initStatus) =>
{
// This callback is called once the MobileAds SDK is initialized.
});
}
public void Start()
{
LoadInterstitialAd();
}
public void LoadInterstitialAd()
{
// 이전에 로드된 광고 체크, 있으면 제거하고 해제
if(_interstitialAd != null)
{
_interstitialAd.Destroy();
_interstitialAd = null;
}
// 새로 광고를 로드하기위한 요청 생성
var adRequest = new AdRequest();
// 광고단위 ID _adUnitId와 adRequest 객체를 전달 받아 광고를 로드.
InterstitialAd.Load(_adUnitId, adRequest,
(InterstitialAd ad, LoadAdError error) =>
{
if (error != null || ad == null)
{
Debug.LogError("interstitial ad failed to load an ad" + "with error : " + error);
return;
}
Debug.Log("Interstitial ad loaded with response : " + ad.GetResponseInfo());
_interstitialAd = ad;
// 성공한 경우 로드된 광고에 대한 이벤트 핸들러를 등록.
RegisterEventHandlers(_interstitialAd);
});
}
// Shows the interstitial ad.
public void ShowInterstitialAd() //광고 표시
{
if (_interstitialAd != null && _interstitialAd.CanShowAd())
{
Debug.Log("Showing interstitial ad.");
_interstitialAd.Show();
}
else
{
LoadInterstitialAd(); //광고 재로드
Debug.LogError("Interstitial ad is not ready yet.");
}
}
// 전면광고에 발생하는 이벤트에 대한 핸들러 등록
private void RegisterEventHandlers(InterstitialAd interstitialAd)
{
// 전면광고 지급 관련 이벤트
interstitialAd.OnAdPaid += (AdValue adValue) =>
{
Debug.Log(String.Format("Interstitial ad paid {0} {1}.",
adValue.Value,
adValue.CurrencyCode));
};
//
interstitialAd.OnAdImpressionRecorded += () =>
{
Debug.Log("Interstitial ad recorded an impression.");
};
// 전면광고가 클릭 되었을 때 이벤트
interstitialAd.OnAdClicked += () =>
{
Debug.Log("Interstitial ad was clicked.");
};
// 전면광고가 열렸을 때 호출
interstitialAd.OnAdFullScreenContentOpened += () =>
{
Debug.Log("Interstitial ad full screen content opened.");
};
// 전면광고가 닫혔을 때 호출
interstitialAd.OnAdFullScreenContentClosed += () =>
{
Debug.Log("close Scene");
};
// 전면광고가 못 열였을 때 호출
interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Interstitial ad failed to open full screen content " +
"with error : " + error);
};
}
private void RegisterReloadHandler(InterstitialAd interstitialAd)
{
// Raised when the ad closed full screen content.
interstitialAd.OnAdFullScreenContentClosed += () =>
{
Debug.Log("Interstitial Ad full screen content closed.");
// Reload the ad so that we can show another as soon as possible.
LoadInterstitialAd();
};
// Raised when the ad failed to open full screen content.
interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Interstitial ad failed to open full screen content " +
"with error : " + error);
// Reload the ad so that we can show another as soon as possible.
LoadInterstitialAd();
};
}
}
이제 다 끝났다. 유니티에서 광고를 사용하고 싶은 부분에서 ShowInterstitialAd 함수를 불러오면 된다.
그럼 얘가 나올 것이다.
이렇게 다 하고 광고 나오는 건 확인했는데 유니티 Gradle 문제가 생겨서 빌드가 안된다. 하... 속이 상한다.
뭐가 또 문제인 걸까!
'유니티' 카테고리의 다른 글
유니티 Post Processing 적용이 안되는 경우 (0) | 2024.01.23 |
---|---|
VR 프로젝트 빌드하는 방법 (0) | 2023.12.28 |
VR 프로젝트 기본 설정 (0) | 2023.12.28 |
VR 프로젝트 초기 셋팅 (0) | 2023.12.28 |
유니티 UI버튼 클릭 안될 때 (0) | 2022.09.13 |