728x90
using GoogleMobileAds.Api;
using UnityEngine;
public class AdMobManager : MonoBehaviour
{
// These ad units are configured to always serve test ads.
#if UNITY_ANDROID
private string _adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
private string _adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
private string _adUnitId = "unused";
#endif
public void Start()
{
// Google 모바일 광고 SDK를 초기화합니다.
MobileAds.Initialize((InitializationStatus initStatus) =>
{
// 이 콜백은 MobileAds SDK가 초기화되면 호출됩니다.
LoadRewardedAd();
});
}
private RewardedAd rewardedAd;
public void LoadRewardedAd()
{
// 새 광고를 로드하기 전에 이전 광고를 정리하십시오.
if (rewardedAd != null)
{
rewardedAd.Destroy();
rewardedAd = null;
}
Debug.Log("Loading the rewarded ad.");
// 광고를 로드하는 데 사용되는 요청을 생성합니다.
var adRequest = new AdRequest();
adRequest.Keywords.Add("unity-admob-sample");
// 광고 로드 요청을 보냅니다.
RewardedAd.Load(_adUnitId, adRequest,
(RewardedAd ad, LoadAdError error) =>
{
RegisterEventHandlers(ad);
// 오류가 null이 아니면 로드 요청이 실패한 것입니다.
if (error != null || ad == null)
{
Debug.LogError("보상형 광고가 광고를 로드하지 못했습니다. " +
"with error : " + error);
return;
}
Debug.Log("응답으로 로드된 보상형 광고 : " + ad.GetResponseInfo());
rewardedAd = ad;
});
}
public void ShowRewardedAd()
{
if (rewardedAd != null && rewardedAd.CanShowAd())
{
rewardedAd.Show((Reward reward) =>
{
// 보상 주는 곳.
Debug.Log(" 보상 주는 곳 // " + reward.Type + " // " + reward.Amount);
});
}
}
// RewardedAd는 일회용 객체입니다. 즉, 보상형 광고가 표시된 후에는 객체를 다시 사용할 수 없습니다. 다른 보상형 광고를 요청하려면 새 RewardedAd 객체를 만들어야 합니다.
// 다음 노출 기회에 맞게 보상형 광고를 준비하려면 OnAdFullScreenContentClosed 또는 OnAdFullScreenContentFailed 광고 이벤트가 발생한 후 보상형 광고를 미리 로드합니다.
private void RegisterEventHandlers(RewardedAd ad)
{
// 광고에서 수익이 발생한 것으로 추정될 때 발생합니다.
ad.OnAdPaid += (AdValue adValue) =>
{
Debug.Log("광고에서 수익이 발생한 것으로 추정될 때 발생합니다. " + adValue.Value + " // " + adValue.CurrencyCode);
};
// 광고에 대한 노출이 기록될 때 발생합니다.
ad.OnAdImpressionRecorded += () =>
{
Debug.Log("광고에 대한 노출이 기록될 때 발생합니다.");
};
// 광고에 대한 클릭이 기록될 때 발생합니다.
ad.OnAdClicked += () =>
{
Debug.Log("광고에 대한 클릭이 기록될 때 발생합니다.");
};
// 광고가 전체 화면 콘텐츠를 열 때 발생합니다.
ad.OnAdFullScreenContentOpened += () =>
{
Debug.Log("광고가 전체 화면 콘텐츠를 열 때 발생합니다.");
};
// 광고가 전체 화면 콘텐츠를 닫을 때 발생합니다.
ad.OnAdFullScreenContentClosed += () =>
{
Debug.Log("광고가 전체 화면 콘텐츠를 닫을 때 발생합니다.");
// 다음 보상형 광고 미리 로드
LoadRewardedAd();
};
// 광고가 전체 화면 콘텐츠를 열지 못했을 때 발생합니다.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("광고가 전체 화면 콘텐츠를 열지 못했을 때 발생합니다." + " with error : " + error);
// 다음 보상형 광고 미리 로드
LoadRewardedAd();
};
}
}
'Unity' 카테고리의 다른 글
[Unity] 인앱 상품을 추가하려면 결제 권한을 APK에 추가해야 합니다. (0) | 2023.07.18 |
---|---|
[Unity] Gradle build failed. (0) | 2023.07.18 |
[Unity] 유니티 애니메이션 이벤트 함수 안나올때. Function Not Supported (0) | 2023.07.11 |
[Unity] 이미지 줄이거나 늘일때 안깨지도록 하기 (0) | 2023.07.06 |
[Unity] Prefab으로 만든 목록의 버튼을 누르면 목록 리셋 (0) | 2023.06.27 |