我发现了类似的问题(主要是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
广告在我正在开发的一个应用程序中显示良好,但不是另一个,异常不显示任何有用的信息。
我想出了如何捕获异常,看看是什么问题实际上(这是我的清单文件中缺少的大量功能)。为了尝试从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。
交换广告:
而不是隐藏AdControl,您可以从http://www.adduplex.com这样的服务中显示一个备用广告栏。