My banner ad will only load if I leave it at default (TOP_LEFT)
If I tell it to go BOTTOM_CENTER, I get this error in logcat:
java.lang.ClassNotFoundException: com.unity3d.services.banners.view.BannerPosition
One suggestion was to use 3.7.5, but it fails to initialize.
Here's the code I use in 4.3.0
using UnityEngine;
using UnityEngine.Advertisements;
using System.Collections;
public class AdsInitializer : MonoBehaviour, IUnityAdsInitializationListener
{
[SerializeField] string _androidGameId;
[SerializeField] string _iOSGameId;
[SerializeField] bool _testMode = true;
private string _gameId;
[SerializeField] string _androidAdUnitId = "Banner_Android";
[SerializeField] string _iOSAdUnitId = "Banner_iOS";
[SerializeField] BannerPosition _bannerPosition;
string _adUnitId = null;
void Awake()
{
if (PlayerPrefs.GetString("Remove Banner Ad") != "Purchased")
{
Debug.Log("Remove Banner Ad not Purchased. This message is in the AdsInitializer script attached to Load and Show Banner Ad");
InitializeAds();
}
else
{
Debug.Log("Remove Banner Ad Purchased. Ads not initialized.");
}
}
public void InitializeAds()
{
_gameId = (Application.platform == RuntimePlatform.IPhonePlayer)
? _iOSGameId
: _androidGameId;
Advertisement.Initialize(_gameId, _testMode, this);
Debug.Log("InitializeAds called.");
}
public void OnInitializationComplete()
{
Debug.Log("OnInitializationComplete called.");
LoadBanner();
}
public void OnInitializationFailed(UnityAdsInitializationError error, string message)
{
Debug.Log($"Unity Ads Initialization Failed: {error.ToString()} - {message}");
StartCoroutine(InitializeAgain());
}
IEnumerator InitializeAgain()
{
yield return new WaitForSeconds(1);
InitializeAds();
Debug.Log("Waited 1s then initialized again");
}
void Start()
{
// Get the Ad Unit ID for the current platform:
#if UNITY_IOS
//_adUnitId = _iOSAdUnitId;
#elif UNITY_ANDROID
_adUnitId = _androidAdUnitId;
#endif
Advertisement.Banner.SetPosition(_bannerPosition);
}
public void LoadBanner()
{
// Set up options to notify the SDK of load events:
BannerLoadOptions options = new BannerLoadOptions
{
loadCallback = OnBannerLoaded,
errorCallback = OnBannerError
};
// Load the Ad Unit with banner content:
Advertisement.Banner.Load(_adUnitId, options);
}
void OnBannerLoaded()
{
Debug.Log("Banner loaded");
ShowBannerAd();
}
void OnBannerError(string message)
{
Debug.Log($"Banner Error: {message}");
}
void ShowBannerAd()
{
Advertisement.Banner.Show(_adUnitId);
}
}
↧