개발환경: Unity 6000.3.19f1, AppsInToss SDK 2.10.7
테스트환경: QR 테스트, Android 16, One UI 8.0
배너광고가 화면 하단에 딱 붙어있지 않고 상단으로 올라와있습니다.
배너는 SDK에서 제공하는 함수를 사용하고 있습니다. AITBannerAd.Show(BANNER_AD_ID, AITBannerPosition.Bottom, AITBannerTheme.Dark);
/// <summary>
/// 배너가 표시될 화면 위치 프리셋
/// </summary>
public enum AITBannerPosition
{
/// <summary>화면 상단 (safe area 반영)</summary>
Top,
/// <summary>화면 하단 (safe area 반영)</summary>
Bottom,
}
문서에서 찾지 못한 내용이지만 AITBannerPosition에서 Safearea가 반영된다는 주석이 달려있어서 확인해보았는데요, AIT.SafeAreaInsetsGet() 함수 및 AIT.SafeAreaInsetsSubscribe 콜백을 통해 얻은 값에는 bottom값이 0입니다. SafeAreaInsets Top: 28.5714, Bottom: 0, Left: 0, Right: 0
배너 영역이 안드로이드 하단 네비게이션 바 영역 만큼 더 올라온 것 같아 보입니다.
혹시 배너 광고를 호출하는 방식이 틀렸을까요?
AITBannerAd.Show 대신 AITBannerAdView 컴포넌트를 사용하도록 변경하였으나 QR테스트에서 변경 전과 완전히 동일하게 잘못된 위치에 배너가 표시됩니다 ㅜㅜ
safearea 등 다른 요소에 영향받지 않도록 작성했는데도 문제가 여전히 남아있네요.
아래 코드에서 혹시 잘못 구현한 부분이 있는지 확인 부탁드려도 될까요?
private void EnsureBannerView()
{
if (_bannerAdView != null)
return;
_bannerRoot = new GameObject("AIT Banner Canvas", typeof(RectTransform), typeof(Canvas));
UnityEngine.Object.DontDestroyOnLoad(_bannerRoot);
var canvas = _bannerRoot.GetComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
canvas.sortingOrder = short.MaxValue;
GameObject bannerContainer = new GameObject("Banner Container", typeof(RectTransform));
bannerContainer.transform.SetParent(_bannerRoot.transform, false);
var rectTransform = (RectTransform)bannerContainer.transform;
var bannerSize = GetBannerSize();
rectTransform.anchorMin = new Vector2(0.5f, 0f);
rectTransform.anchorMax = new Vector2(0.5f, 0f);
rectTransform.pivot = new Vector2(0.5f, 0f);
rectTransform.sizeDelta = new Vector2(bannerSize.x, bannerSize.y);
rectTransform.anchoredPosition = Vector2.zero;
_bannerAdView = bannerContainer.AddComponent<AITBannerAdView>();
_bannerAdView.AdGroupId = BANNER_AD_ID;
_bannerAdView.Placement = AITBannerAdPlacement.FollowRectTransform;
_bannerAdView.AutoResizeHeight = false;
_bannerAdView.OnAdEvent += OnBannerAdEvent;
}
이전에 AITBannerAd.Show(BANNER_AD_ID, AITBannerPosition.Bottom, AITBannerTheme.Dark); 호출해서 구현했을 때 올라와있는만큼 배너크기에 패딩을 더했던 코드가 남아있던게 영향을 주었습니다.
자체구현한 GetBannerSize 사이즈에서 높이갚을 조정하니 배너 위치가 그에 맞게 조정되었습니다.
이제 또 다른 얘기긴 한데, 정확한 배너사이즈를 구할 수 있을까요?
여기저기서 찾아본 바로는 웹 css기준 96px 이라고만 되어있어서 dpr값을 곱해 사용하고 있는데 이게 정확하게 사용하고 있는건지 모르겠습니다.
public static Vector2 GetBannerSize()
{
var screenWidth = Screen.width;
var dpr = AIT.GetDevicePixelRatio();
return new Vector2(screenWidth, 96f);
}