在Windows Phone 8中设置广告

ell*_*ayo 18 ads windows-phone windows-phone-8 windows-phone-8-emulator

我发现了一些针对类似问题的分散响应(主要是使用Windows Phone 7),但希望发布包含Windows Phone 8 Ads所有要求的答案.

我在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
Run Code Online (Sandbox Code Playgroud)

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

ell*_*ayo 49

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

捕获广告控制错误

    public MainPage()
    {
        InitializeComponent();

        AdUnit.ErrorOccurred += AdUnit_ErrorOccurred;
    }

    void AdUnit_ErrorOccurred(object sender, Microsoft.Advertising.AdErrorEventArgs e)
    {
        throw new NotImplementedException();
    }
Run Code Online (Sandbox Code Playgroud)

这告诉我,我错过了MEDIALIB权限和PHONEDIALER权限.我进行了一些测试,并确定任何投放广告的应用都需要以下权限:

必需的权限

ID_CAP_IDENTIFY_USER
ID_CAP_MEDIALIB_PHOTO
ID_CAP_NETWORKING
ID_CAP_PHONEDIALER
ID_CAP_WEBBROWSERCOMPONENT
Run Code Online (Sandbox Code Playgroud)

设置参数

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

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

<UI:AdControl x:Name="AdUnit" Height="80" Width="480"
    AdUnitId="Image480_80" ApplicationId="test_client" />
Run Code Online (Sandbox Code Playgroud)

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

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

隐藏:

AdUnit.Height = 0;
AdUnit.Visibility = System.Windows.Visibility.Collapsed;
Run Code Online (Sandbox Code Playgroud)

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

交换广告:

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