Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity 3D游戏中未显示Chartboost广告_C#_Android_Unity3d_Ads_Chartboost - Fatal编程技术网

C# Unity 3D游戏中未显示Chartboost广告

C# Unity 3D游戏中未显示Chartboost广告,c#,android,unity3d,ads,chartboost,C#,Android,Unity3d,Ads,Chartboost,我有一个简单的例子,我正在使用chartboost和unity ads t show广告,我在测试模式下工作得很好,但自从我在chartboost和unity广告中部署并禁用了测试模式后,我注意到我的插入式广告和视频不会加载或显示,除了偶尔加载或显示一次,这也是同一个游戏的一部分,然后它就消失了再次开始失败 我还注意到我的广告对chartboost和Unity的印象很低。你能告诉我我的代码是否正确吗?我使用了chartboost示例,通过它构建了我的广告控制器,哦,我正在使用广告缓存,除非广告尚

我有一个简单的例子,我正在使用chartboost和unity ads t show广告,我在测试模式下工作得很好,但自从我在chartboost和unity广告中部署并禁用了测试模式后,我注意到我的插入式广告和视频不会加载或显示,除了偶尔加载或显示一次,这也是同一个游戏的一部分,然后它就消失了再次开始失败

我还注意到我的广告对chartboost和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();
    }
}

 }

每次显示间隙后运行缓存

像这样:

   Chartboost.showInterstitial(CBLocation.Default); 
   Chartboost.cacheInterstitial(CBLocation.Default);
这样,您将在每次显示广告时补充缓存

记住,一旦初始化,也要缓存它