Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- networkbehaviourid
- unity 병합
- 유니티
- networkobject
- 유니티 해상도 변경
- Github DeskTop Merge
- unity git
- m585 수리
- stateauthority
- 유니티 브랜치 merge
- navigation
- 몬스터
- m585
- nav거리
- networkobject.networkid
- 유니티 해상도
- Unity
- 유니티 머지
- githubdesktopmerge
- NavMesh
- nav오브젝트사이거리
- unity merge
- M590
- 유니티 해상도 설정
- 깃허브 데스크탑 병합
- m590 수리
- 오브젝트 깜빡임
- 깃허브 데스크탑 합치기
- 유니티 합치기
Archives
- Today
- Total
집게사장의 꿈
[유니티]유니티 애드몹 리워드 / 유니티 구글 애드몹 / [Reward] 순서에 대하여 / 2023-02-02 본문
코드 출처
https://github.com/googleads/googleads-mobile-unity/blob/d629b7be42f93ff9efe4488b9d5ff7a2703571ac/samples/HelloWorld/Assets/Scripts/GoogleAdMobController.cs
구글 애드몹 버전 Google Mobile Ads Unity Plugin v7.4.0
전체코드
using GoogleMobileAds.Api;
using UnityEngine.Events;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
//AdmobManager.cs 플러그인이 6.0.0이상부턴 AddTestDevice가 제거되어 다음을 참고하세요.
public class ADmobManager : MonoBehaviour
{
// 이벤트 함수에 함수를 담아 사용가능
public UnityEvent OnAdOpeningEvent;
public UnityEvent OnAdClosedEvent;
public Text LogText;
public Button RewardAdsBtn;
string adUnitId;
private RewardedAd rewardedAd; //리워드 광고
private void Start()
{
adUnitId = "ca-app-pub-3940256099942544/5224354917";
RequestAndLoadRewardedAd();
RewardAdsBtn.onClick.AddListener(() => ShowRewardedAd());
}
void PrintStatus(string s)
{
LogText.text = "\n" + s;
Debug.LogWarning(s);
}
public void RequestAndLoadRewardedAd()
{
PrintStatus("광고 로드 시작");
// create new rewarded ad instance
RewardedAd.Load(adUnitId, CreateAdRequest(),
(RewardedAd ad, LoadAdError loadError) =>
{
//리워드 요청이 실패할 경우
if (loadError != null)
{
PrintStatus("Rewarded ad failed to load with error: " +
loadError.GetMessage());
return;
}
else if (ad == null)
{
PrintStatus("Rewarded ad failed to load.");
return;
}
PrintStatus("리워드 광고 로드완료");
rewardedAd = ad;
//각 상황별 이벤트 함수
//rewardedAd변수에 각 상황에 대한 실행값들을 넣어준다.
ad.OnAdFullScreenContentOpened += () =>
{
PrintStatus("광고 오픈");
OnAdOpeningEvent.Invoke();
};
ad.OnAdFullScreenContentClosed += () =>
{
PrintStatus("광고 닫음");
RequestAndLoadRewardedAd();
OnAdClosedEvent.Invoke();
};
ad.OnAdImpressionRecorded += () =>
{
PrintStatus("광고 노출 수 기록" + ++num);
};
ad.OnAdClicked += () =>
{
PrintStatus("광고 클릭 수 기록[실제 다운로드하기 위한]");
};
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
PrintStatus("광고 노출 실패와 이유 : " +
error.GetMessage());
};
ad.OnAdPaid += (AdValue adValue) =>
{
string msg = string.Format("{0} (currency: {1}, value: {2}",
"Rewarded ad received a paid event.",
adValue.CurrencyCode,
adValue.Value);
PrintStatus(msg);
};
});
}
public void ShowRewardedAd() //리워드 광고를 보여줌
{
if (rewardedAd != null) // 리워드 광고가 있을 경우에 아래 해당 코드를 작성
{
rewardedAd.Show((Reward reward) =>
{
PrintStatus("Rewarded ad granted a reward: " + reward.Amount); //리워드는 광고를 보는 즉시 지급되는 방식
});
}
else
{
PrintStatus("Rewarded ad is not ready yet.");
}
}
#region HELPER METHODS
private AdRequest CreateAdRequest()
{
return new AdRequest.Builder()
.AddKeyword("unity-admob-sample")
.Build();
}
#endregion
}
이벤트에 대한 설명
ad.OnAdFullScreenContentOpened += () => { PrintStatus("광고 오픈"); OnAdOpeningEvent.Invoke(); }; |
광고 클릭 후 열리면 호출되는 이벤트 |
ad.OnAdFullScreenContentClosed += () => { PrintStatus("광고 닫음"); RequestAndLoadRewardedAd(); OnAdClosedEvent.Invoke(); }; |
광고를 본 후 X를 눌렀을 때 호출되는 이벤트 |
ad.OnAdImpressionRecorded += () => { PrintStatus("광고 노출 수 기록"); }; |
광고가 화면에 표시되었을 때 나타나는 이벤트 [EX. 광고의 일일 클릭수를 제한하는데 사용할 것으로 보임] |
ad.OnAdClicked += () => { PrintStatus("광고 클릭 수 기록[실제 다운로드하기 위한]"); }; |
광고를 클릭 수 실제 "설치하기"를 눌렀을 때의 이벤트 |
ad.OnAdFullScreenContentFailed += (AdError error) => { PrintStatus("광고 노출 실패와 이유 : " + error.GetMessage()); }; |
광고 노출에 실패한 경우 |
ad.OnAdPaid += (AdValue adValue) => { string msg = string.Format("{0} (currency: {1}, value: {2}", "Rewarded ad received a paid event.", adValue.CurrencyCode, adValue.Value); PrintStatus(msg); }; |
모름 |
ShowRewardAd에 대해
public void ShowRewardedAd() //리워드 광고를 보여줌
{
if (rewardedAd != null) // 리워드 광고가 있을 경우에 아래 해당 코드를 작성
{
rewardedAd.Show((Reward reward) =>
{
PrintStatus("리워드 광고 보상 제공 : " + reward.Amount); //리워드는 광고를 보는 즉시 지급되는 방식
});
}
else
{
PrintStatus("Rewarded ad is not ready yet.");
}
}
-광고를 닫고 보상이 지급되는 것이 아닌 광고에서 지정된 시간만큼 모두 시청하면,
(Reward reward) =>
{
PrintStatus("리워드 광고 보상 제공 : " + reward.Amount); //리워드는 광고를 보는 즉시 지급되는 방식
});
함수가 실행이 된다.
Unity Android Logcat으로 확인해본 Event 순서
유니티 시작 후 코드 실행 순서 1. RequestAndLoadRewardedAd(); 2. RewardAdsBtn 버튼 클릭 |
1.광고로드 시작 2.리워드 광고 로드 완료 3.광고오픈 4.광고노출 수 기록 1 5.광고 모두 시청 후 => 보상제공 10 6.광고 닫음 **설치하기 누르기 => 광고 클릭 수 기록[실제 다운로드를 위한] 닫기 이후 => 1.광고 로드 시작 2. 리워드 광고 로드 완료 |
광고 로드 실패시 코루틴으로 일정시간마다 재로드 하면 될것 같다.
'유니티' 카테고리의 다른 글
[Unity]유니티 UI 최적화 (0) | 2023.11.25 |
---|---|
[Unity] 유니티 카메라 안에 오브젝트 판단 GetDistanceToPoint (1) | 2023.11.25 |
유니티 단축키 (2) | 2023.11.25 |
[Unity] 유니티 해상도 설정 UI / 주사율 변경 (1) | 2023.11.25 |
[유니티]navMesh 오브젝트 사이 거리 / navigation 오브젝트 사이 거리 / nav 거리값 (0) | 2023.11.06 |