首页 > 解决方案 > 无法将 Heyzap 广告集成到我的 Unity 应用程序中

问题描述

正如标题所说,我正在尝试将广告包装器添加到我的项目中,但遇到了一些问题:

我已经检查了Heyzap 在这里放置的示例应用程序,它运行良好。我什至试着把它放到我自己的项目中,没有改变任何东西,我也遇到了同样的问题。

这是我写的课程:

using Heyzap;
using UnityEngine;

public static class AdManager {
    public static void InitialiseAdNetwork() 
    {
        HeyzapAds.NetworkCallbackListener networkCallbackListener = delegate(string network, string callback) {
            Debug.Log("The " + network + " network has been " + callback);
        };
        HeyzapAds.SetNetworkCallbackListener(networkCallbackListener);
        HeyzapAds.Start("myID", HeyzapAds.FLAG_DISABLE_AUTOMATIC_FETCHING);

        HZInterstitialAd.SetDisplayListener(delegate(string adState, string adTag) {
            Debug.Log("INTERSTITIAL: " + adState + " Tag : " + adTag);
        });
        HZIncentivizedAd.SetDisplayListener(delegate(string adState, string adTag) {
            Debug.Log("INCENTIVIZED: " + adState + " Tag : " + adTag);
        });
    } 
    public static void ShowMediationSuite()
    {
        HeyzapAds.ShowMediationTestSuite();
    }

    public static void ShowInterstitialAd() 
    {
        HZInterstitialAd.Fetch();
    }
}

谁能看到我做错了什么?因为我不可以。

标签: c#unity3dadsheyzap

解决方案


From your code it looks to me that you are not calling to show the AD, but just fetch the AD. For an interstitial AD, you need to call the following line:

HZInterstitialAd.Show ();

You will only be able to show the AD after a Fetch () call has completed. You can find out when Fetch () has completed successfully by either (1) setting up your delegates to check for it or (2) checking if an AD is available using a method such as HZInterstitialAd.IsAvailable ().

Method (1) - Shows AD immediately after Fetch () has completed - note that this is specific for HeyZap Interstitial ADs and would not work for other AD types (video, etc) or for non-HeyZap networks if you are using mediation:

HZInterstitialAd.SetDisplayListener(delegate(string adState, string adTag) {
    Debug.Log("INTERSTITIAL: " + adState + " Tag : " + adTag);

    if ( adState.Equals("available") ) {
        HZInterstitialAd.Show ();
    }
});

Method (2) - How you do this method really depends on your architecture. For example, you might add a Try method to your AdManager and have the caller decide what to do if an AD is not ready:

public static bool TryShowInterstitialAd() 
{
    if (HZInterstitialAd.IsAvailable ()) {
        HZInterstitialAd.Show ();
        return true;
    }

    return false;
}

推荐阅读