Quand vous intégrez de la pub dans votre application celle-ci ne s’affiche pas forcement à chaque ouverture de votre application. La raison peut être qu’il n’y a pas de pub disponible à ce moment là, qu’elle n’a pas eut le temps de se charger, etc…
Et qui dit pub non affichée, dit argent en moins.
“Ad Mediation” a été mis en place par Microsoft pour optimiser l’affichage des publicités de votre application en faisant en sorte de toujours montrer une annonce quoi qu’il arrive.
Le principe est simple, si l’annonce n’est pas disponible on va en chercher une autre auprès d’un autre fournisseur (comme le schéma ci-dessus).
Avec cette solution on approche des 100% d’affichage à chaque ouverture de votre application, et donc 100% de revenu, autant en profiter dans ce cas 😉
Voici donc comment utiliser cet outils “Ad Mediation” :
Télécharger Ad Mediation :
Tout d’abord, téléchargez Ad Mediation disponible sur le site de Microsoft :
lien de téléchargement
Une fois téléchargé, lancer votre projet avec Visual Studio
Pensez à supprimer toutes les références aux fournisseurs d’annonces déjà mis en place.
Ajouter le contrôle dans votre page :
Ensuite, depuis la “boite à outils”, le petit onglet en haut à droite, sélectionnez “AdMediatorControl” :
Puis glissez le dans la vue “design” (et pas dans le code xaml) de l’écran dans lequel vous voulez l’insérer.
Le code XAML va ainsi être automatiquement créé.
Pour une application Windows Phone 8.1 XAML pour moi ça donne ça :
<WindowsPhone81:AdMediatorControl x:Name="AdMediator_678g67" HorizontalAlignment="Left" Height="70" Id="AdMediator-Id-FHF67GTY-FFF6-VB78-FH78-FHJ89KUIH3" VerticalAlignment="Top" Width="391"/>
(le x:Name et l’Id sont évidemment des exemples que j’ai modifié.)
Configuration :
Une fois que vous avez ajouté tous les Contrôles que vous souhaitez, vous êtes prêts à les configurer via “Connected Services”.
Notez que si vous ajoutez un autre “AdMediatorControl” par la suite il vous faudra à nouveau reconfigurer les contrôles via “Connected Services”.
Donc…pour lancer la configuration :
- Cliquez droit sur le nom du projet dans l’explorateur de solution.
- Cliquez ensuite sur “ajouter”
- Puis cliquez sur “Connected Services” (services connectés en français)
Par défaut, les DLLs de Microsoft Advertising vont être ajoutées mais vous pouvez les supprimer dans l’étape suivante si vous n’utilisez pas ce service.
Ajouter et supprimer des fournisseurs d’annonce
Pour ajouter ou supprimer un annonceur, cliquez sur “Select ad networks”.
vous allez voir une liste de tous les annonceurs disponibles pour votre projet.
Pour ma part (projet WP 8.1 XAML), je n’ai que 3 choix : Microsoft Advertising, adDuplex et Smaato, mais pour les applications silverlight la liste est beaucoup plus longue.
Sélectionnez donc ceux que vous voulez, puis cliquez sur OK et l’installation va se lancer (ou la désinstallation).
Note : si vous avez des erreurs à ce point, je vous conseille de lire la doc (en anglais) fournie par Microsoft ici.
Maintenant vous devriez voir la liste de vos annonceurs. Notez la colonne “Required capabilities”.
Cela indique les capacités que vous devez activer sur votre projet dans le fichier “Package.appxmanifest” pour que les annonceurs fonctionnent correctement.
Ensuite il va vous falloir configurer chaque annonceur avec les infos demandées tel que ci-dessous.
Par exemple, pour Microsoft Advertising, vous trouverez les informations sur http://pubcenter.microsoft.com.
Pour avoir l’ensemble des informations nécessaires à chaque annonceur, je vous invite à aller sur ce lien : http://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn864356.aspx
Une fois que la fenêtre s’est ouverte, cliquez sur “Ad Mediator”, puis sur la ligne “Microsoft Advertising” puis “configurer” pour configurer votre annonceur “Microsoft Advertising par défaut.
Catcher les erreurs de Ad Networks
Durant mes tests je me suis rendu compte qu’un certain nombre de “unhandled exceptions” (exceptions non catchées) provenaient de Ad Networks.
Pour éviter de faire planter l’application à cause de ça je vous conseille d’ajout le code suivant dans votre fichier “App.xaml.cs”.
Si vous développez une application WP8.1 XAML (ou universal app pour les intimes), prenez le code ci-dessous :
// In App.xaml.cs file, register with the UnhandledException event handler. UnhandledException += App_UnhandledException; void App_UnhandledException(object sender, UnhandledExceptionEventArgs e) { if (e != null) { Exception exception = e.Exception; if (exception is NullReferenceException && exception.ToString().ToUpper().Contains("SOMA")) { Debug.WriteLine("Handled Smaato null reference exception {0}", exception); e.Handled = true; return; } } // APP SPECIFIC HANDLING HERE if (Debugger.IsAttached) { // An unhandled exception has occurred; break into the debugger Debugger.Break(); } }
Si vous développez une application WP 8(.1) Silverlight, prenez le code suivant :
// In App.xaml.cs file, register with the UnhandledException event handler. UnhandledException += Application_UnhandledException; // Code to execute on unhandled exceptions private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) { if (e != null) { Exception exception = e.ExceptionObject; if ((exception is XmlException || exception is NullReferenceException) && exception.ToString().ToUpper().Contains("INNERACTIVE")) { Debug.WriteLine("Handled Inneractive exception {0}", exception); e.Handled = true; return; } else if (exception is NullReferenceException && exception.ToString().ToUpper().Contains("SOMA")) { Debug.WriteLine("Handled Smaato null reference exception {0}", exception); e.Handled = true; return; } else if ((exception is System.IO.IOException || exception is NullReferenceException) && exception.ToString().ToUpper().Contains("GOOGLE")) { Debug.WriteLine("Handled Google exception {0}", exception); e.Handled = true; return; } else if (exception is ObjectDisposedException && exception.ToString().ToUpper().Contains("MOBFOX")) { Debug.WriteLine("Handled Mobfox exception {0}", exception); e.Handled = true; return; } else if ((exception is NullReferenceException) && exception.ToString().ToUpper().Contains("MICROSOFT.ADVERTISING")) { Debug.WriteLine("Handled Microsoft.Advertising exception {0}", exception); e.Handled = true; return; } } // APP SPECIFIC HANDLING HERE if (Debugger.IsAttached) { // An unhandled exception has occurred; break into the debugger Debugger.Break(); } //e.Handled = true; }
Testez votre application :
Vous pouvez tester le bon fonctionnement de Ad Mediation directement dans votre émulateur préféré.
L’émulateur de Visual Studio va afficher tous les annonceurs que vous avez sélectionnés, les uns après les autres et pour une durée égale (ce qui ne sera pas le cas en vrai).
Soumettre votre application et configurer Ad Mediation
On arrive à la partie intéressante de Ad Mediation (enfin !).
Quand votre application est prête à être publiée sur le store, vous allez avoir une petite étape supplémentaire à paramétrer sur le Windows Phone dev center.
Le dev center va détecter automatiquement que vous utilisez Ad Mediation et quels annonceurs vous avez sélectionnés.
Vous allez ainsi voir sur la page de téléchargement du package une section de configuration de Ad Mediation tel que l’écran ci-dessous.
Vous n’aurez besoin de le faire qu’une seule fois.
Et le gros avantage, c’est que si vous souhaitez mettre à jour ces paramètres (pour diminuer l’affichage d’un annonceur par exemple), vous n’aurez pas besoin de modifier le code, mais juste d’aller dans le WP Dev Center et d’effectuer vos modifications. C’est pas génial ça?
Maintenant que toutes vos annonces sont paramétrées, à vous la richesse 😉