我弄清楚了如何捕获异常并查看问题实际上是什么(这是我的清单文件中缺少大量功能)。为了尝试捕获 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 也很重要,如果它是自动的并且没有最小尺寸,则广告将不会显示。
确保要在模拟器中查看它只能使用测试 ApplicationId 和 AdUnitId http://msdn.microsoft.com/en-us/library/advertising-mobile-windows-phone-test-mode-values%28v=msads.20%29.aspx。 PubCenter 凭据仅适用于已发布的应用程序。
<UI:AdControl x:Name="AdUnit" Height="80" Width="480"
AdUnitId="Image480_80" ApplicationId="test_client" />
隐藏或交换失败/空的广告控件
如果您的 AdControl 失败,它会在您的广告中留下很大的空白空间。您可以隐藏它或将其与其他网络的广告交换。为此,请捕获如上所示的异常(AdUnit_ErrorOccurred
)并添加以下内容:
To Hide:
AdUnit.Height = 0;
AdUnit.Visibility = System.Windows.Visibility.Collapsed;
设置可见性本身不起作用,高度也必须设置为 0。
Swap Ad:
您可以显示来自类似服务的备用广告栏,而不是隐藏 AdControlhttp://www.adduplex.com http://www.adduplex.com.