我的头脑出现了奇怪的问题,来自microsoft pubcenter的广告不是clickabkle 应用程序使用D3D / XAML互操作。 但是我在Windows商店看到很多游戏都有pubcenter广告并明确使用d3d / xaml - 如何让这两个游戏一起工作?
重现问题的简单步骤: (VS2013 - 包含所有最新更新,pibcenter ctrl也更新到最新版本)
VS2013 - >新 - >项目 - > (Visual C ++ / Store Apps) - > DirectX和XAML应用程序(Windows手机)
(注意:这是Windows phone 8.1 app, NOT windows phone 8.1 silverlight app)
创建项目时,只需转到DirectXPage.xaml
并将其编辑为如下所示:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:AdTest"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:UI="using:Microsoft.Advertising.Mobile.UI"
x:Class="AdTest.DirectXPage"
mc:Ignorable="d">
<SwapChainPanel x:Name="swapChainPanel">
<!-- Grid definition, to place ad on bottom (may remove if no ads) -->
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Hello from XAML!"
HorizontalAlignment="Right"
VerticalAlignment="Top"
FontSize="30" />
<UI:AdControl Grid.Column="0" Grid.Row="1" x:Name="adBanner" AutoRefreshIntervalInSeconds="60" ApplicationId="xxxxxxxxxxx" AdUnitId="xxxxx" HorizontalAlignment="Right" Height="50" IsAutoRefreshEnabled="True" Margin="0,0,0,0" VerticalAlignment="Bottom" Width="320"/>
</SwapChainPanel>
<!-- Uncomment this if using the app bar in your phone application.
<Page.BottomAppBar>
<CommandBar>
<AppBarButton Icon="Play" AutomationProperties.Name="Sample Button"
AutomationProperties.AutomationId="SampleAppBarButton" Click="AppBarButton_Click" />
</CommandBar>
</Page.BottomAppBar>-->
</Page>
用真实应用/单位ID替换xxxxx并运行示例 - 现在当横幅显示时,尝试点击它 - 它不起作用:/ 有没有办法让它可点击? (它没有被任何其他控件覆盖,它可以正常输入,所以我不知道问题是什么)。
答案 0 :(得分:0)
你解决了问题吗? 这似乎与它是一个c ++应用程序有关,我也遇到了很多问题。 我找到的一个解决方法是将方法添加到控件中:
adPubcenter->Tapped += ref new Windows::UI::Xaml::Input::TappedEventHandler(this, &OpenGLESPage::OnAdTapped);
void OpenGLESPage::OnAdTapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e){
然后
void OpenGLESPage::OnAdTapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e){
//Handle touch yourself (ie. opens a game that you have)
Windows::System::Launcher::LaunchUriAsync(ref new Uri("http://www.windowsphone.com/s?appid=bb8d4ce2-1853-47b6-9b0d-bb1af5a07436"));
}
至少通过这种方式,广告会在点击时执行某些操作。