无法让WP 8.1 AdControl在用户点击时启动

3
我有一个针对Windows/WP 8.1的通用应用程序项目,我试图让广告在两个平台上运行。 在我的控件的OnApplyTemplate函数中,我使用#ifdef动态创建适用于Windows或WP的AdControl。 代码在Windows上运行良好,在WP上广告也能正常显示;但是当我点击它时,没有任何反应。 我尝试用动态按钮替换代码以确保其他东西没有拦截点击事件,而按钮可以很好地工作。 有什么想法吗?
    protected override void OnApplyTemplate()
    {
        base.OnApplyTemplate();

        var baseGrid = (Grid)GetTemplateChild("_BaseGrid");
        var bannerGrid = (Grid)GetTemplateChild("_BannerGrid");

#if WINDOWS_APP
        bannerGrid.Height = 450;

        // Create the ad
        var ad = new Microsoft.Advertising.WinRT.UI.AdControl()
        {
            ApplicationId = "0b7b7910-f56d-477c-b0e9-3def577b6359",
            AdUnitId = "10056707",
            Height = 90,
            Width = 728,
            Visibility = AdVisibility,
            VerticalAlignment = VerticalAlignment.Top,
            HorizontalAlignment = HorizontalAlignment.Center
        };
        baseGrid.Children.Add(ad);

#else
        // Set the margins appropriately for WP
        bannerGrid.Margin = new Thickness(0, 55, 0, 50);

        /* This works just fine!
        var button = new Button()
        {
            Content = "Try This!",
            Height = 50,
            Width = 320,
            VerticalAlignment = VerticalAlignment.Top,
            HorizontalAlignment = HorizontalAlignment.Center
        };
        button.Click += (object sender, RoutedEventArgs args) =>
        {
            Nova.Utilities.Logger.Info("User tapped on button.");
        };
        baseGrid.Children.Add(button);*/

        // Create the ads
        var ad = new Microsoft.Advertising.Mobile.UI.AdControl("f854ae91-1c0e-469c-8387-6c90ef8fa6a2", "11388154", true)
        {
            Height = 50,
            Width = 320,
            Visibility = AdVisibility,
            IsEnabled = true,
            VerticalAlignment = VerticalAlignment.Top,
            HorizontalAlignment = HorizontalAlignment.Center
        };
        ad.IsEngagedChanged += (object sender, RoutedEventArgs args) =>
            {
                Nova.Utilities.Logger.Info("User tapped on Ad.");
            };
        baseGrid.Children.Add(ad);
#endif
    }

我知道这可能是一次瞎猜,但是你检查过IsSupended标志了吗?也许它在其他地方被暂停了。 - Pseudonym
@Pseudonym,那个链接似乎正是我的问题。但它相当古老了。我希望现在已经被修复了,不是吗? - Nick Banks
通过跟进一些链接,有些人认为这与未将当前内容设置为帧而是页面有关。http://forum.unity3d.com/threads/game-graphics-freeze-after-live-windows-8-1-store-ad-is-displayed-using-prime31-plugin.297778/ - Nick Banks
目前,我的页面实际上继承自SwapChainBackgroundPanel。修改它会有点麻烦。 - Nick Banks
我为了更清晰地表达,移除了几乎所有其他的评论,并将所有内容都放在了下面的答案中。 - Pseudonym
1个回答

2
所以看起来这可能仍然是系统中的一个漏洞:
这是我们系统中的一个漏洞。我们仍在积极地修复它并制定发布计划。但是我找到了一个解决方法。顺便说一下,我们团队还没有完全测试过这个解决方法。

https://social.msdn.microsoft.com/Forums/en-US/053fe091-8ffb-4d6f-a5ca-f39cff4af618/ads-not-responding-to-tap-or-click?forum=aiaforwinphone

根据评论,一些挖掘显示可能与未正确设置当前上下文到框架有关:

MonoGame 的人们也遇到了这个问题,与新的 Microsoft 广告 SDK for Windows 8.1 相关。他们不得不进行更改以使广告再次工作。也许 prime31 June 插件需要类似的更新?我也在 prime31 的支持论坛上询问。

https://monogame.codeplex.com/discussions/467336

此外,我发现其他人发布的 Unity Windows Store 8.1 游戏在广告显示后有时会出现冻结问题。我想他们没有注意到。例如:(第一个弹出的广告为我冻结了游戏图形):

http://apps.microsoft.com/windows/e...mulator/04eea1ba-8792-437f-a7c2-faec620da6bf#

跟随链接似乎表明将其设置为网格可以取得一定成功:
将宽度和高度以及背景添加到中,并将其放置在您希望广告出现的位置。如果您不设置宽度和高度并且给网格设置背景颜色,它会充满整个屏幕。

https://monogame.codeplex.com/discussions/467336

我能找到的最佳答案是,似乎没有其他方法可以解决这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接