Adduplex控件在真实手机上引发InvalidOperationException

时间:2014-09-16 17:37:58

标签: c# xaml windows-phone-8 adduplex

我有Silverlight WP8应用程序,使用Nuget的AdDuplexWP8.2.8.0.9 sdk。我在Adduplex.com上添加了我的应用程序,它处于运行状态。

当我在模拟器上运行它时,它会按预期显示横幅。但是,当我尝试使用真正的手机时,它会提出:

    System.InvalidOperationException 
     Sequence contains no elements: at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)

at  AdDuplex.WindowsPhone.DLL!AdDuplex.Models.ObstructionDetector.IsElementOnTop(Microsoft.Phone.Controls.PhoneApplicationFrame frame, Microsoft.Phone.Controls.PhoneApplicationPage page, System.Windows.FrameworkElement marker, out System.Windows.FrameworkElement culpritElement, bool isTest)

是否因为adduplex的应用版本尚未发布?

由于两个配置中只包含一个dll(ARM和x86),我怀疑sdk本身可能有问题,但这是我唯一可以使用的sdk版本。

更新:应用现在处于“正在运行”状态。

P.S。 Windows 8版本的应用程序运行良好,甚至待定。

1 个答案:

答案 0 :(得分:1)

所有邪恶的根源是尝试在运行时调整adControl的位置。

由于最终用户的屏幕分辨率在设计时未知,我可以设置DrawingSurface高度,如果没有明确指定高度,它将变为零。这就是我在Microsoft.Xna.Framework.Game构造函数中设置adControl.Margin或DrawingSurface.Height的原因。一切都在仿真器(以及Win8版本)上运行,但在真实设备上以某种方式与adDuplex代码混淆,后者检查adcontrol位置和默默无闻。

到目前为止,解决方案很简单:

   <DrawingSurface x:Name="XnaSurface" Canvas.ZIndex="0" />
   <adduplex:AdControl x:Name="adDuplexAd"  AppId="{MyID}"
                            Canvas.ZIndex="100" VerticalAlignment="Bottom"  />

但是如果你计划移动adControl,你应该使用变换raither而不是Margin或Width / Height。