Google AdMob 구글 애드몹 광고 넣기
일단 구글 애드몹 사이트로 들어가서 원하는 광고의 방식을 설정해주어야한다.
https://admob.google.com/intl/ko/home/
광고 단위 추가버튼을 눌러서 광고 단위를 만들어 준다.
광고 단위 ID : 이 광고 단위에 할당된 고유의 ID로 이 ID를 이용해서 앱의 광고 단위를 구현한다.
https://github.com/googleads/googleads-mobile-unity/releases
패키지 다운로드 후에 임포트 까지 완료하기
설치를 완료하고 나면 Asset 창에서 Google Mobile Ads 가 추가된걸 볼 수 있다.
이제 Settings 창을 열어서 아까 추가한 광고를 적용 시켜주어야 한다.
Settings에는 이렇게 되어있는데 Google Mobile Ads App ID 안에
자신의 App ID를 넣어주어야한다.
혹시 위에서 광고 단위를 설정하면서 나온 아이디를 까먹었다면
앱 - 앱설정 - 앱정보에서 앱 ID를 복사해서 Google Mobile Ads App ID 안에 넣어주면 된다.
아직 앱을 출시하기 전이고 광고 테스트를 하고 싶을 경우,
구글에서 제공해주는 Sample App ID와 전면 광고 아이디를 사용해서 테스트 하여야한다.
테스트 모드가 아닌 상태에서 광고를 많이 클릭 하면 무효 활동으로 되어 계정이 신고 될 수 있다고 한다.
Android와 iOS 의 Sample 광고 ID 가 다르니 아래의 사이트에서 확인하고 적용 해주는게 좋다.
https://developers.google.com/admob/unity/test-ads?hl=ko#android
sample App ID : ca-app-pub-3940256099942544~3347511713
sample 전면광고 ID : ca-app-pub-3940256099942544/1033173712
전면 광고 코드 작성하기
새로운 스크립트를 하나 생생 해준다.
using GoogleMobileAds.Api;
그리고 애드몹을 사용하기 위해서
using GoogleMobileAds.Api 을 선언해준다.
private InterstitialAd interstitial;
private void RequestInterstitial()
{
this.interstitial = new InterstitialAd(adUnitId);
}
전면 광고를 게재하기 위해서는 InterstitialAd 객체를 만들어 초기화 해준다.
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/1033173712"; //sample
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3940256099942544/4411468910"; //sample
#else
string adUnitId = "unexpected_platform";
#endif
* 전처리기를 사용해서 플랫폼에 따라 각기 다른 광고 단위를 사용할 수 있도록 해줌 *
테스트 할 때는 항상 테스트 광고로 테스트하기 !
광고 로드(불러오기)
광고를 불러오기 전에 광고를 넣어줄 빈 공간을 만들어 준다.
AdRequest request = new AdRequest.Builder().Build();
IntersititialAd 클래스의 LoadAd() 메서드를 사용해서 요청한 광고를 불러온다.
this.interstitial.LoadAd(request);
P.S , IOS 에서는 Interstitial 객체를 한번만 사용하기 때문에 광고가 한번 나왔을 경우에는 다시 Interstitial 객체를 사용할 수 없다고 한다. 그래서 광고를 다시 요청하기 위해서 새로운 Interstitial 객체를 생성 해야한다.
광고 게재(보여주기)
전면 광고는 앱 이용이 잠시 중단 될 때 자연스럽게 표시 되어야한다.
전면 광고를 표시하려면 CanShowAd()(isLoad() 메서드는 요즘 안쓴다고 한다)를 사용해서
로드( LoadAd() 메서드)가 완료 되었는지 확인하고 Show() 메서드로 광고를 호출 해준다.
//전면 광고 게재
public void Show_AD_interstitial()
{
if (this.interstitial.CanShowAd())
{
this.interstitial.Show();
}
}
광고 이벤트
EventHandler를 이용해서 Evnet가 발생했을 때만 함수가 실행 될 수 있도록 만들어준다.
초기 생성자 아래 쪽에 다음 이벤트 함수를 넣어준다.
this.interstitial.OnAdLoaded += HandleOnAdLoaded;
this.interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad;
this.interstitial.OnAdOpening += HandleOnAdOpening;
this.interstitial.OnAdClosed += HandleOnAdClosed;
//광고 요청이 성공적으로 로드되면 호출됩니다.
private void HandleOnAdLoaded(object sender, EventArgs e)
{
print("HandleAdLoaded event received");
}
//광고 요청을 로드하지 못한 경우 호출됩니다.
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs e)
{
print("Interstitial failed to load: " + e.ToString());
}
//광고가 닫히면 호출됩니다.
private void HandleOnAdClosed(object sender, EventArgs e)
{
print("HandleAdOpening event received");
}
//광고가 표시되면 호출됩니다.
private void HandleOnAdOpening(object sender, EventArgs e)
{
print("HandleAdClosed event received");
}
OnAdLoaded | 광고가 로드가 완료 되었을 때 실행되는 메소드 |
OnAdFailedToLoad | 광고 로드를 실패했을 때 실행되는 메소드 (Message를 통해서 실패 유형에 대한 설명 확인 가능) |
OnAdOpening | 광고가 표시될 때 실행 되고 기기의 화면을 덮는다 |
OnAdClosed | 사용자가 전면광고를 닫을 때, 실행되는 메소드 (앱에서 오디오 출력 또는 게임 루프를 일시중지 했을때 주로 사용 한다) |
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
using System;
public class AdsManager : MonoBehaviour
{
public InterstitialAd interstitial;
public static AdsManager instance { get; private set; }
private void Awake()
{
if (instance != null)
{
Destroy(gameObject);
return;
}
instance = this;
RequestInterstitial();
}
//전면 광고 로드
private void RequestInterstitial()
{
//플랫폼에 따라 각기 다른 광고 단위 사용함
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/1033173712"; //sample
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3940256099942544/4411468910"; //sample
#else
string adUnitId = "unexpected_platform";
#endif
//객체 초기화
this.interstitial = new InterstitialAd(adUnitId);
this.interstitial.OnAdLoaded += HandleOnAdLoaded;
this.interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad;
this.interstitial.OnAdOpening += HandleOnAdOpening;
this.interstitial.OnAdClosed += HandleOnAdClosed;
//빈 광고 요청을 만들어준다.
AdRequest request = new AdRequest.Builder().Build();
this.interstitial.LoadAd(request);
}
//광고 요청이 성공적으로 로드되면 호출됩니다.
private void HandleOnAdLoaded(object sender, EventArgs e)
{
print("HandleAdLoaded event received");
}
//광고 요청을 로드하지 못한 경우 호출됩니다.
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs e)
{
print("Interstitial failed to load: " + e.ToString());
}
//광고가 닫히면 호출됩니다.
private void HandleOnAdClosed(object sender, EventArgs e)
{
RequestInterstitial();
print("HandleAdOpening event received");
}
//광고가 표시되면 호출됩니다.
private void HandleOnAdOpening(object sender, EventArgs e)
{
print("HandleAdClosed event received");
}
//전면 광고 게재
public void Show_AD_interstitial()
{
if (this.interstitial.CanShowAd())
{
this.interstitial.Show();
}
else
{
Debug.Log("NOT Loaded Interstitial");
RequestInterstitial();
}
}
}
애드몹 콘솔에서 테스트 기기 등록하기
설정> 기기 테스트
기기의 이름과 플랫폼을 설정해주고
광고 ID/IDFA 를 적어주어야하는데 이건 본인의 안드로이드 폰에서 확인 할 수 있다.
광고 탭 아래쪽에 보면 이 기기의 광고 ID를 확인 할 수 있다.
광고 검사기는 사용하면 광고 게재와 관련된 유용한 정보를 확인하고
서드 파티 광고 소스를 실시간으로 테스트 할 수 있다고 한다.
기기 테스트 등록이 완료 되려면 최소 1시간에서 최대 24시간 까지 소요된다고 한다.
등록이 완료 되기 전 까지는 테스트 기기에도 실제 광고가 노출 된다고 한다.
광고 테스트를 진행 하기 전에 테스트 광고인지 확인하고 테스트를 진행 해야한다.
'PROGRAMING📚 > Unity📑' 카테고리의 다른 글
[유니티 Unity]구글 애드몹, 앱 오프닝 광고 적용하기 (0) | 2023.02.07 |
---|---|
[유니티 Unity] 구글 애드몹 배너(BannerView) 광고 넣기 (0) | 2023.02.06 |
[유니티Unity]유니티에서 인앱 업데이트 지원 하기 (1) | 2023.01.27 |
[유니티 Unity]Unity Localization으로 다국어 지원 기능 넣기 (0) | 2023.01.13 |
[유니티 Unity]Error : No cloud project ID was found by the Analytics SDK. 해결하기 (2021.3.9f1) (2) | 2023.01.12 |
댓글