InterstitialAd不适用于Windows Phone 10(UWP - Windows 10)

时间:2016-03-07 15:41:15

标签: win-universal-app windows-10-universal

在Windows Phone模拟器上运行时,我无法让InterstitialAd在我的UWP应用程序中工作(请注意,我还没有在实际的真实手机上试过它)

当我在模拟器或本地计算机中将我的UWP应用程序作为Windows应用商店应用运行时,它可以正常工作。

有什么想法吗?

感谢。

更新 - 1

以下是我用来显示InterstitialAd的代码。在我的MainPage.xaml.cs中,我有以下代码:

public sealed partial class MainPage : Page
{
    private InterstitialAd interstitialAd;

    public MainPage()
    {
        this.InitializeComponent();

        // Instantiate the interstitial video ad
        interstitialAd = new InterstitialAd();

        // Attach event handlers
        interstitialAd.ErrorOccurred += OnAdError;
        interstitialAd.AdReady += OnAdReady;
        interstitialAd.Cancelled += OnAdCancelled;
        interstitialAd.Completed += OnAdCompleted;
    }
}

// This is an event handler for the interstitial ad. It is 
// triggered when the interstitial ad is ready to play.
private void OnAdReady(object sender, object e)
{
    // The ad is ready to show; show it.
    interstitialAd.Show();
}

// This is an event handler for the interstitial ad. It is 
// triggered when the interstitial ad is cancelled.
private void OnAdCancelled(object sender, object e)
{
}

// This is an event handler for the interstitial ad. It is 
// triggered when the interstitial ad has completed playback.
private void OnAdCompleted(object sender, object e)
{
}

// This is an error handler for the interstitial ad.
private void OnAdError(object sender, AdErrorEventArgs e)
{
}

我已经从他们的UWP商店样本中获取了这些代码,除了不是从按钮启动它,我在我的页面加载时启动它:

private void Page_Loaded(object sender, RoutedEventArgs e)
{
    // Request an ad. When the ad is ready to show, 
    // the AdReady event will fire.

    // The application id and ad unit id are passed in here.
    // The application id and ad unit id can be obtained from Dev 
    // Center.
    // See "Monetize with Ads" at https://msdn.microsoft.com/
    // en-us/library/windows/apps/mt170658.aspx
#if DEBUG
    interstitialAd.RequestAd(AdType.Video, 
    "d25517cb-12d4-4699-8bdc-52040c712cab", "11389925");
#else
    interstitialAd.RequestAd(AdType.Video, 
    "d25517cb-12d4-4699-8bdc-52040c712cab", "11389925");
#endif
}

我暂时将ApplicationId和UnitAdId作为测试值,因为我还没有发布它,好吧,不管广告是不是。

由于

更新 - 2:

我在各种事件中添加了一些调试日志,这就是我得到的:

Page_Loaded: 00:00:00.0001590
Page_Loaded - RequestAd: 00:00:00.0091840
OnAdReady - Elasped Time: 00:01:04.6923865
OnAdError: NetworkConnectionFailure : Media timeout occurred 
                                      during playback. - Elasped 
                                      Time: 00:00:08.1955928

触发OnAdReady需要1分多钟,这真的很奇怪,然后我在8秒后得到一个OnAdError,所以从这些日志中你可以认为存在网络问题,但我的数据正确加载,这都是从网络服务中提取,所以肯定有联系。此外,我的AdMediator按预期显示广告(好吧,那种!那是另一个故事!)。

我明天会尝试将它直接转移到我的手机上,看看是否有任何差异,我将笔记本电脑插入以太网端口而不是使用无线,但我的无线网络相当不错,所以我不知道为什么我遇到了网络连接错误。

1 个答案:

答案 0 :(得分:1)

上面的代码是正确的,实际上可以在Windows Phone上使用UWP,但它在模拟器中的效果并不好:

  • 如果没有,则会间歇性地生成网络连接错误。
  • 显示广告可能需要一分多钟,但最终会显示。

我刚将我的应用程序上传到商店并将其下载到我的手机上,它按预期工作。它会立即或在几秒钟左右显示广告。

我建议你不要浪费太多时间通过手机模拟器尝试它,因为它似乎是主要问题。实施您的代码,然后直接在您的设备上进行测试,或者假设您还没有发布您的应用,请从商店下载。

<强>更新

我只是觉得我更新了我的答案,因为我刚刚阅读了有关UI and User Experience Guidelines 的插页式广告以及我实际的方式的做法和不做的事情。这样做,是避免&#34;避免&#34;列表。

它建议您提前30-60秒获取广告,并且在应用启动时您不会显示它,这就是我正在做的事情,所以我想我会更改逻辑关于。