오리키우기 내부 테스트 중에...
보상형 광고를 보고 close를 하면 앱이 강제종료가 되는 현상이 발생했다.
광고를 띄우는 것까지는 문제가 없었는데 광고를 다보고 종료하기만 하면 강제종료가 되었고
당연히 보상도 들어오지 않았다.
구글링을 해보니 쓰레드 충돌 문제라고 하는데
(아마도) TextMeshPro가 주로 문제가 되는 듯 했다.
애드몹에서 광고를 실행하는 동안 게임을 일시중지하기 위해 유니티와 분리된 스레드에서 광고가 실행되는데,
광고후 첫 프레임에서 TMP로 텍스트를 렌더링할때 충돌하는 현상이 있다고 한다.
해결책으로 TMP를 비활성화 하면 된다고 하는데...
이미 만들어놓은걸 비활성화 하긴 아까워서
광고가 끝났는지 체크하는 bool형 변수를 만들고
update에서 해당 변수가 true면 invoke로 0.1초 뒤에 보상을 주는 함수가 실행되게 만들었다.
private bool endVideo=false;
private bool rewardComplete=false;
public void HandleUserEarnedReward(object sender, Reward args)
{
rewardComplete = true;
}
public void HandleRewardedAdClosed(object sender, EventArgs args)
{
this.CreateAndLoadRewardedAd();
endVideo = true;
}
void Update()
{
if (endVideo)
{
endVideo = false;
if (rewardComplete)
{
Invoke("rewardOn", 0.1f);
}
rewardComplete= false;
}
}
크러시 안나고 잘된다. ^___^
참고: https://mentum.tistory.com/438