18

我发现了一些针对类似问题的零散回复(主要针对 Windows Phone 7),但我想发布一个包含所有 Windows Phone 8 广告要求的答案。

我在 Windows Phone 8 中设置广告时遇到了一些问题。每次运行模拟器时,都会遇到应用程序可以运行但广告不显示的问题。

该应用程序运行正常,但我注意到在输出控制台中记录了以下异常:

An exception of type 'Microsoft.Advertising.Shared.AdException' occurred in Microsoft.Advertising.Mobile.DLL and wasn't handled before a managed/native boundary

广告在我正在开发的一个应用程序中显示良好,但在另一个应用程序中却没有,并且该异常没有显示任何有用的信息。

4

1 回答 1

49

我想出了如何捕获异常并查看问题实际上是什么(这是我的清单文件中大量缺失的功能)。为了尝试从 AdControl 中捕获异常并获取我需要的数据,我将以下内容添加到我的页面中。

捕捉广告控制错误

    public MainPage()
    {
        InitializeComponent();

        AdUnit.ErrorOccurred += AdUnit_ErrorOccurred;
    }

    void AdUnit_ErrorOccurred(object sender, Microsoft.Advertising.AdErrorEventArgs e)
    {
        throw new NotImplementedException();
    }

这表明我缺少 MEDIALIB 许可和 PHONEDIALER 许可。我进行了一些测试,并确定任何运行广告的应用都需要以下权限:

所需权限

ID_CAP_IDENTIFY_USER
ID_CAP_MEDIALIB_PHOTO
ID_CAP_NETWORKING
ID_CAP_PHONEDIALER
ID_CAP_WEBBROWSERCOMPONENT

设置参数

从我读过的其他帖子中,确保将广告单元的宽度/高度正确设置为 480/80 也很重要,如果它是自动的并且没有最小尺寸,那么广告将不会显示。

确保要在模拟器中查看它,您只能使用test ApplicationId 和 AdUnitId。PubCenter 凭据仅适用于已发布的应用程序。

<UI:AdControl x:Name="AdUnit" Height="80" Width="480"
    AdUnitId="Image480_80" ApplicationId="test_client" />

隐藏或交换失败/空广告控件

如果您的 AdControl 失败,它会在您的广告中留下很大的空白。您可以隐藏它或将其与来自其他网络的广告交换。为此,请捕获如上所示的异常 ( AdUnit_ErrorOccurred) 并添加以下内容:

隐藏:

AdUnit.Height = 0;
AdUnit.Visibility = System.Windows.Visibility.Collapsed;

设置可见性本身不起作用,高度也必须设置为 0。

交换广告:

除了隐藏 AdControl,您还可以显示来自http://www.adduplex.com等服务的备用广告栏。

于 2012-11-28T15:50:59.433 回答