我有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版本的应用程序运行良好,甚至待定。
答案 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。