Did you know that you can navigate the posts by swiping left and right?

Google AdMob für Windows Phone 7

16 Mar 2011 . Unknown . Comments

Google hat gestern für seinen Mobile Advertising-Dienst AdMob ein SDK für Windows Phone 7 herausgebracht. Nach dem es kaum Alternativen vor allem im deutschsprachigen Raum gibt, ist dieser Schritt auf jedenfall positiv zu sehen.

Die Einbindung ist relativ simpel (hier die offizielle Anleitung):

  • Account bei admob.com anlegen
  • Die eigene Anwendung im Dashboard erstellen
  • Das SDK herunterladen
  • Die .dll-Datei im WP7-Projekt referenzieren
  • Das Ad-Control bsp. mit einer Zeile XAML-Code einbinden:
<google:bannerad adunitid="" xmlns:google="clr-namespace:Google.AdMob.Ads.WindowsPhone7.WPF;assembly=Google.AdMob.Ads.WindowsPhone7" />

Vielleicht als Anmerkung: Im Moment ist in der offiziellen Anleitung noch das Beispiel ohne self-closing Tag abgebildet, das sollte man natürlich korrigieren. ;-)

Soweit, so einfach. Das von Google bereitgestellte Beispiel funktionierte bei mir auch sofort auf Anhieb. Nur die Implementation in mein eigenes Projekt wollte einfach nicht gelingen: Nach dem Starten der App kam immer sofort eine Fehlermeldung, die nicht mal vom allgemeinen Exception-Handling abgefangen wurde:

System.SystemException was unhandled
  Message=An unknown error has occurred. Error: 80010108.
  StackTrace:
       at Microsoft.Phone.Controls.NativeMethods.ValidateHResult(Int32 hr)
       at Microsoft.Phone.Controls.WebBrowserInterop.set_IsScriptEnabled(Boolean value)
       at Microsoft.Phone.Controls.WebBrowser.OnPresentationHosted(IWebBrowserInterop hostedInterop)
       at Microsoft.Phone.Controls.WebBrowserHwndHost.BuildWindowCore(IntPtr hwndParent)
       at MS.Internal.HwndHost.BuildWindow(IntPtr hwndParent, IntPtr& hwnd)
       at MS.Internal.HwndHost.BuildWindow(IntPtr nativeHwndHost, IntPtr hwndParent, IntPtr& hwnd)
       at MS.Internal.XcpImports.SetValueNative(IntPtr element, UInt32 property, CValue& outval)
       at MS.Internal.XcpImports.SetValue(INativeCoreTypeWrapper obj, DependencyProperty property, DependencyObject doh)
       at System.Windows.DependencyObject.SetValue(DependencyProperty property, DependencyObject doh)
       at System.Windows.Controls.Border.set_Child(UIElement value)
       at Microsoft.Phone.Controls.WebBrowser.OnApplyTemplate()
       at System.Windows.FrameworkElement.OnApplyTemplate(IntPtr nativeTarget)
       at MS.Internal.XcpImports.MethodExNative(IntPtr context, IntPtr element, UInt32 cString, String name, UInt32 cParams, IntPtr pParams, CValue& outval, Int32& typeIndex)
       at MS.Internal.XcpImports.MethodEx(IntPtr ptr, String name, CValue[] cvData)
       at MS.Internal.XcpImports.MethodEx(DependencyObject obj, String name)
       at MS.Internal.XcpImports.FrameworkElement_ApplyTemplate(FrameworkElement frameworkElement)
       at System.Windows.FrameworkElement.ApplyTemplateInternal()
       at System.Windows.Controls.Control.ApplyTemplate()
       at Microsoft.Phone.Controls.WebBrowser.OnLoaded(Object sender, RoutedEventArgs e)
       at System.Windows.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
       at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName)

 

Es hat mich gestern Abend einige Mühe gekostet herauszufinden, woran das liegen könnte. Die Lösung fand sich schließlich in der Datei WMAppManifest.xml im Properties-Ordner. Hier muss unbedingt der ID_CAP_WEBBROWSERCOMPONENT gesetzt werden, den ich vor einiger Zeit wegen Nichtverwendung entfernt hatte.

Kaum wurde die Eigenschaft wieder eingetragen, funktionierte auch das Ad-Control fehlerfrei.

Questions/Suggestions
As always, for questions or feedback, contact me or leave a comment.

Octocat by GitHubEdit this page on GitHub