2016-03-30 15 views
0

Ich habe eine einfache platformer game in denen ich mit chartboost und Unity Anzeigen t Anzeigen zeigen und ich es war gut im Testmodus, aber seit ich in der Produktion bereitgestellt und deaktiviert den Test Modus in beiden Charts und Unity-Anzeigen Ich habe festgestellt, dass meine Interstitial-Anzeigen und Videos nicht geladen oder angezeigt werden, außer einmal in einem blauen Mond, dass zu einem gleichen Spiel und dann wieder Fehler zu starten.Chartboost Anzeigen nicht in Unity 3D Spiel

Mir ist auch aufgefallen, dass meine Anzeigenimpression auf dem Chartboost und Unity ziemlich niedrig sind. Können Sie mir bitte sagen, ob ich richtig codiere? Ich habe das Charboost-Beispiel verwendet und meinen Ad-Controller damit erstellt, oh, und ich verwende Caching für Anzeigen. Wenn die Anzeige nicht bereits zwischengespeichert ist, werde ich sie nicht anzeigen.

Hier ist der Code:

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(); 
    } 
} 

} 

Antwort

0

Run-Cache nach jedem Mal, wenn Sie eine interstitielle zeigen.

wie folgt aus:

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

diese Weise können Sie den Cache jedes Mal wieder aufzufüllen erhalten Sie eine Anzeige geschaltet.

Denken Sie daran, Cache, sobald es auch initialisiert wird.