如何在uwp中单击microsoft广告时获取事件
我正在为xaml使用Microsoft广告SDK。我的应用程序现在可以显示广告了。但我想知道用户点击广告时的事件 以下事件均无效如何在uwp中单击microsoft广告时获取事件,uwp,windows-store-apps,uwp-xaml,ads,Uwp,Windows Store Apps,Uwp Xaml,Ads,我正在为xaml使用Microsoft广告SDK。我的应用程序现在可以显示广告了。但我想知道用户点击广告时的事件 以下事件均无效 <ads:AdControl x:Name="adAd" Grid.Row="3" ApplicationId="" AdUnitId="" Width="300" Height="250" AdRefreshed="OnAdRefreshed" ErrorOccurred="OnErrorOccurred"
<ads:AdControl x:Name="adAd" Grid.Row="3" ApplicationId="" AdUnitId=""
Width="300" Height="250" AdRefreshed="OnAdRefreshed"
ErrorOccurred="OnErrorOccurred"
Tapped="OnAdTapped" OnPointerDown="OnAdPointerDown"
PointerPressed="OnAdPointerPressed"/>
以下事件均无效
<ads:AdControl x:Name="adAd" Grid.Row="3" ApplicationId="" AdUnitId=""
Width="300" Height="250" AdRefreshed="OnAdRefreshed"
ErrorOccurred="OnErrorOccurred"
Tapped="OnAdTapped" OnPointerDown="OnAdPointerDown"
PointerPressed="OnAdPointerPressed"/>
实际上,您不能直接使用上述事件,因为它将被显示在广告WebView
中的超链接单击忽略。
如果您想检测AdControl
的点击事件,您可以使用一些间接的方式,使用visualtreeheloper
来获取广告WebView
,并收听它的导航开始
事件
public static T MyFindListBoxChildOfType<T>(DependencyObject root) where T : class
{
var MyQueue = new Queue<DependencyObject>();
MyQueue.Enqueue(root);
while (MyQueue.Count > 0)
{
DependencyObject current = MyQueue.Dequeue();
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(current); i++)
{
var child = VisualTreeHelper.GetChild(current, i);
var typedChild = child as T;
if (typedChild != null)
{
return typedChild;
}
MyQueue.Enqueue(child);
}
}
return null;
}
private void AdTest_AdRefreshed(object sender, RoutedEventArgs e)
{
var ADWebView = MyFindListBoxChildOfType<WebView>(AdTest);
ADWebView.NavigationStarting += ADWebView_NavigationStarting;
}
private void ADWebView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
System.Diagnostics.Debug.WriteLine("AD clicked---------------");
}
应该有用。我不明白为什么代码示例中的3个事件“未工作”。未工作是指当我单击广告时,点击的事件OnPointerDown、PointerPressed不会触发。IsEngagedChanged也没有开火。嗨@Vincent我编辑了答案请检查。在搜索了所有文档之后,到目前为止,这几乎是最好的答案,尽管仍然存在一些小问题。尽管这是一个“解决方案”,但它过于复杂,而OP主要是寻找单个事件处理程序。如果我们不得不求助于这个代码样板来处理一次单击,那么UWP可能存在一些潜在的问题。