2016-03-30 3 views
0

У меня есть простой platformer game, в котором я использую рекламные объявления с графикой и единством. Я показываю рекламу, и я работал нормально во время тестового режима, но с тех пор, как я развернулся к производству и отключил тест как в объявлениях chartboost, так и в единстве, я заметил, что мои межстраничные объявления и видеоролики не загружаются и не отображаются, кроме как однажды в синей луне, что тоже в одной игре, а затем снова начинает сбой.Объявления Chartboost, не показывающиеся в Unity 3D Game

Я также заметил, что показ моих объявлений довольно низок на графике и Unity. Не могли бы вы сказать мне, правильно ли я правильно сформулировал это? Я использовал пример chartboost, встроенный в него контроллер объявлений, а я использую кеширование для рекламы, и если объявление не кэшировано, я не буду его показывать.

Вот код:

using UnityEngine; 
    using System.Collections; 
    using UnityEngine.Advertisements; 
    using ChartboostSDK; 
    using System; 

    public class AdsController : MonoBehaviour 
    { 
     public static AdsController instance; 

// app id for unity apps 
private const string _appId = "someID"; 

public bool canShowChartBoostInterstitial; 
public bool canShowChartBoostVideo; 

private void Awake() 
{ 
    MakeSingleton(); 

    if (!canShowChartBoostInterstitial) 
    { 
     LoadChartBoostInterstitialAds(); 
    } 

    if (!canShowChartBoostVideo) 
    { 
     LoadChartBoostVideoAds(); 
    } 

    LoadUnityAds(); 
} 

private void MakeSingleton() 
{ 
    if (instance != null) 
    { 
     Destroy(gameObject); 
    } 
    else 
    { 
     instance = this; 
     DontDestroyOnLoad(gameObject); 
    } 
} 

private void OnLevelWasLoaded() 
{ 
    if (Application.loadedLevelName == "LevelMenu") 
    { 
     if (GameController.instance.canShowAds) 
     { 
      if (canShowChartBoostInterstitial) 
      { 
       ShowChartBoostInterstitial(); 
      } 
      else 
      { 
       LoadChartBoostInterstitialAds(); 
      } 
     } 
    } 
} 

private void OnEnable() 
{ 
    Chartboost.didCompleteRewardedVideo += VideoCompleted; 
    Chartboost.didCacheInterstitial += DidCacheInterstitial; 
    Chartboost.didDismissInterstitial += DidDismissInterstitial; 
    Chartboost.didCloseInterstitial += DidCloseInterstitial; 
    Chartboost.didCacheRewardedVideo += DidCacheVideo; 
    Chartboost.didFailToLoadInterstitial += FailedToLoadInterstitial; 
    Chartboost.didFailToLoadRewardedVideo += FailedToLoadVideo; 
} 

private void OnDisable() 
{ 
    Chartboost.didCompleteRewardedVideo -= VideoCompleted; 
    Chartboost.didCacheInterstitial -= DidCacheInterstitial; 
    Chartboost.didDismissInterstitial -= DidDismissInterstitial; 
    Chartboost.didCloseInterstitial -= DidCloseInterstitial; 
    Chartboost.didCacheRewardedVideo -= DidCacheVideo; 
    Chartboost.didFailToLoadInterstitial -= FailedToLoadInterstitial; 
    Chartboost.didFailToLoadRewardedVideo -= FailedToLoadVideo; 
} 

public void VideoCompleted(CBLocation location, int reward) 
{ 
    canShowChartBoostVideo = false; 

    if (RewardController.instance != null) 
    { 
     RewardController.instance.VideoWatchedGiveUserAReward(); 
    } 

    LoadChartBoostVideoAds(); 

} 

public void DidCacheInterstitial(CBLocation location) 
{ 
    canShowChartBoostInterstitial = true; 
} 

public void DidDismissInterstitial(CBLocation location) 
{ 
    canShowChartBoostInterstitial = false; 
    LoadChartBoostVideoAds(); 

    LoadChartBoostInterstitialAds(); 
} 

public void DidCloseInterstitial(CBLocation location) 
{ 
    canShowChartBoostInterstitial = false; 
    LoadChartBoostVideoAds(); 

    LoadChartBoostInterstitialAds(); 
} 

public void DidCacheVideo(CBLocation location) 
{ 
    canShowChartBoostVideo = true; 
} 

private void FailedToLoadInterstitial(CBLocation location, CBImpressionError error) 
{ 
    canShowChartBoostInterstitial = false; 
    LoadChartBoostInterstitialAds(); 
} 

private void FailedToLoadVideo(CBLocation location, CBImpressionError error) 
{ 
    canShowChartBoostVideo = false; 

    if (ShopMenuController.instance != null) 
    { 
     ShopMenuController.instance.FailedToLoadTheVideo(); 
    } 

    LoadChartBoostVideoAds(); 
} 

public void LoadChartBoostVideoAds() 
{ 
    Chartboost.cacheRewardedVideo(CBLocation.Default); 
} 

public void LoadChartBoostInterstitialAds() 
{ 
    Chartboost.cacheInterstitial(CBLocation.Default); 
} 

public void ShowChartBoostInterstitial() 
{ 
    if (canShowChartBoostInterstitial) 
    { 
     Chartboost.showInterstitial(CBLocation.Default);    
    } 
    else 
    { 
     LoadChartBoostInterstitialAds(); 
    } 
} 

public void ShowChartBoostVideo() 
{ 
    if (canShowChartBoostVideo) 
    { 
     Chartboost.showRewardedVideo(CBLocation.Default); 
    } 
    else 
    { 
     LoadChartBoostVideoAds(); 
    } 
} 

public void LoadUnityAds() 
{ 
    if (Advertisement.isSupported) 
    { 
     Advertisement.Initialize(_appId, false); 
    } 
} 

public void ShowUnityAds() 
{ 
    if (Advertisement.IsReady()) 
    { 
     Advertisement.Show(null, new ShowOptions() 
     { 
      resultCallback = result => 
      { 
       switch (result) 
       { 
        case ShowResult.Finished: 
         GameController.instance.RewardPlayerWithSomething(); 
         LoadUnityAds(); 
         break; 

        case ShowResult.Failed: 
         GameController.instance.VideoNotLoadedOrUserSkippedTheVideo("Failed to load the video. Please try again."); 
         LoadUnityAds(); 
         break; 

        case ShowResult.Skipped: 
         GameController.instance.VideoNotLoadedOrUserSkippedTheVideo("Video skipped."); 
         LoadUnityAds(); 
         break; 
       } 
      } 
     }); 
    } 
    else 
    { 
     GameController.instance.VideoNotLoadedOrUserSkippedTheVideo("Failed to load the video. Please try again."); 
     LoadUnityAds(); 
    } 
} 

} 

ответ

0

кэш Run после того, как каждый раз, когда вы показываете межстраничное.

так:

Chartboost.showInterstitial(CBLocation.Default); 
    Chartboost.cacheInterstitial(CBLocation.Default); 

Таким образом, вы будете пополнять кэш каждый раз, когда вы показываете объявление.

Помните, что кешируйте, как только его инициализируют.

 Смежные вопросы

  • Нет связанных вопросов^_^