我发现了一些针对类似问题的分散回复(主要是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
广告在我正在开发的一个应用中显示正常但不是另一个,并且该例外不会显示任何有用的信息。
答案 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。