Degullmok-client/Assets/Script/Common/AdmobAdsManager.cs
fiore c74d78c116 Google Admob import.
- reward ads init.
- 광고 아이디 테스트용으로 세팅
- 충돌 방지 위해 메인씬에서 AD Manager 제거
- 상점 구현 후 로직 정비 필요
2025-03-13 16:40:39 +09:00

135 lines
4.6 KiB
C#

using System;
using UnityEngine;
using UnityEngine.SceneManagement;
using GoogleMobileAds.Api;
public class AdmobAdsManager : Singleton<AdmobAdsManager>
{
#if UNITY_ANDROID
private string _bannerAdUnitId = "ca-app-pub-3245096053779548~5309609957"; // Test ID
private string _interstitialAdUnitId = "ca-app-pub-3940256099942544/1033173712"; // Test ID
private string _rewardAdUnitId = "ca-app-pub-3940256099942544/5224354917"; // Test ID
#elif UNITY_IOS
// IOS ID, IOS 빌드 추가할 경우 수정
private string _bannerAdUnitId = "ca-app-pub-3940256099942544/2934735716"; // Test ID
private string _interstitialAdUnitId = "ca-app-pub-3940256099942544/4411468910"; // Test ID
private string _rewardAdUnitId = "ca-app-pub-3940256099942544/1712485313"; // Test ID
#endif
// TODO: 위처럼 전처리기 이용해 빌드에 따라 변경되어야함
private string _rewardAdUnitId = "ca-app-pub-3940256099942544/5224354917"; // Test ID
// ---------------------------------------------------------------------
// private BannerView _bannerView;
// private InterstitialAd _interstitialAd;
private RewardedAd _rewardedAd;
private void Start()
{
MobileAds.Initialize(initStatus =>
{
// 리워드 광고 로드
LoadRewardedAd();
});
}
protected override void OnSceneLoaded(Scene scene, LoadSceneMode mode) { }
#region Rewarded Ads
/// <summary>
/// Loads the rewarded ad.
/// </summary>
public void LoadRewardedAd()
{
// Clean up the old ad before loading a new one.
if (_rewardedAd != null)
{
_rewardedAd.Destroy();
_rewardedAd = null;
}
Debug.Log("Loading the rewarded ad.");
// create our request used to load the ad.
var adRequest = new AdRequest();
// send the request to load the ad.
RewardedAd.Load(_rewardAdUnitId, adRequest,
(RewardedAd ad, LoadAdError error) =>
{
// if error is not null, the load request failed.
if (error != null || ad == null)
{
Debug.LogError("Rewarded ad failed to load an ad " + "with error : " + error);
return;
}
Debug.Log("Rewarded ad loaded with response : " + ad.GetResponseInfo());
_rewardedAd = ad;
RegisterRewardedAdEventHandlers(_rewardedAd);
});
}
public void ShowRewardedAd()
{
const string rewardMsg =
"Rewarded ad rewarded the user. Type: {0}, amount: {1}.";
if (_rewardedAd != null && _rewardedAd.CanShowAd())
{
_rewardedAd.Show((Reward reward) =>
{
// TODO: Reward the user.
// 여기서 유저에게 보상 제공.
// 실제 보상은 admob 대시보드에서 설정한 후 지급하지만
// 편의를 위해 여기서 임의로 보상 내용 작성
// GameManager.Instance.AddHeartCount(3);
Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount));
});
}
}
private void RegisterRewardedAdEventHandlers(RewardedAd ad)
{
// Raised when the ad is estimated to have earned money.
ad.OnAdPaid += (AdValue adValue) =>
{
Debug.Log(String.Format("Rewarded ad paid {0} {1}.",
adValue.Value,
adValue.CurrencyCode));
};
// Raised when an impression is recorded for an ad.
ad.OnAdImpressionRecorded += () =>
{
Debug.Log("Rewarded ad recorded an impression.");
};
// Raised when a click is recorded for an ad.
ad.OnAdClicked += () =>
{
Debug.Log("Rewarded ad was clicked.");
};
// Raised when an ad opened full screen content.
ad.OnAdFullScreenContentOpened += () =>
{
Debug.Log("Rewarded ad full screen content opened.");
};
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += () =>
{
Debug.Log("Rewarded ad full screen content closed.");
LoadRewardedAd();
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Rewarded ad failed to open full screen content " + "with error : " + error);
LoadRewardedAd();
};
}
#endregion
}