在Windows Phone 8中设置广告

时间:2012-11-28 15:50:59

标签: windows-phone advertising windows-phone-8 windows-phone-8-emulator

我发现了一些针对类似问题的分散回复(主要是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

广告在我正在开发的一个应用中显示正常但不是另一个,并且该例外不会显示任何有用的信息。

1 个答案:

答案 0 :(得分:49)

我想出了如何捕获异常并查看实际问题是什么(我的Manifest文件中存在大量缺失的功能)。为了尝试从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 and 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.

交换广告:

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