如何将AdControl与多个AdUnitIds一起使用?

时间:2014-12-29 20:06:52

标签: c# windows-store-apps

是否可以在具有多个AdControl的Windows 8.1应用中使用一个AdUnitId?我从网上的不同来源跟踪了这个方法,以使AdControl有点工作,但现在我发现(在向AdControl ErrorOccurred事件添加事件处理程序之后)错误代码为NoAdAvailable,这意味着对于所选类别,没有广告投放(我在德国)。我AdControl的代码如下所示:

        AdControl adControl = new AdControl
                    {
                        ApplicationId = "a1b2c3d4-1a2a-1234-1a2a-1a2b3c4d5e6f",
                        AdUnitId = "123456",
                        HorizontalAlignment = HorizontalAlignment.Left,
                        Height = 250,
                        VerticalAlignment = VerticalAlignment.Top,
                        Width = 250
                    };
        adControl.ErrorOccurred += adControl_ErrorOccurred;

根据Microsoft pubCenter中显示的信息,当我为广告添加多个类别时,ApplicationId保持不变(如预期),但AdUnitId会发生变化。如何使用来自多个类别的广告,是否有简单的解决方案?或者我是否必须在更改类别时尝试实例化AdControl(以及AdUnitId,直到我不再获得异常,然后使用那个?最好的方法是什么?

更新

设置后,您无法更改AdUnitId,因此无效。

更新2

我仍然不确定是否所有设置都正确 - 当我启动我的应用程序(从Windows App Store安装)时,我总是收到“NoAdsAvailable”错误。应显示广告的类别是“游戏”,因此错误消息表明(对于我的区域),该类别中没有广告。当我使用不同的广告应用时,他们会展示必须来自游戏类别的广告,所以我担心我可能没有正确设置所有内容。

有没有人有想法?

1 个答案:

答案 0 :(得分:5)

您需要使用逻辑来决定在任何给定时刻使用哪个AdUnitId。这包括为实时应用程序选择不同类别的不同值,同时为开发版本选择AdUnitIdApplicationId here的测试模式值之一。这是为了防止点击欺诈。

This page显示了如何使用编译器预处理器指令来确保您只在应用程序的调试版本中使用测试模式值。

警告!如果您经常尝试在调试应用中使用实时广告ID,尤其是点击/按广告,您的广告ID可能会被暂停。


对于网站:

如果您的网站涉及人们定期点击链接,我可能只会在每次加载页面时生成不同的AdUnitId

但是,如果您有一个预计会长时间静态查看的页面,我会使用AJAX来引入一个页面'只有AdControl开启,并随机选择或轮播AdUnitId,确保每隔几分钟就会投放一个新广告。

请注意,这不是以过高的速度完成的,并且广告会向用户清楚显示,以避免任何点击欺诈企图的印象。


对于商店应用: (道歉,我的大脑失误了:)

对于商店应用,只需在长计时器上使用下一个AdControl重新创建新的AdUnitId,然后添加控件。隐藏旧控件,然后正确处理它。