Tout savoir pour développer pour Marketplace Pierre Cauchois | http://blogs.msdn.com/pierreca
• Les Best Practices du développement mobile
• Développer pour Marketplace
• Code natif/managé
• Widgets
• Publier sur Marketplace
• Le processus, les règles, etc
Agenda
BEST PRACTICES DU DÉVELOPPEMENT MOBILE
Usage, Fonction, Experience?
• Oubliez la technique et concentrez vous sur: • L'utilisateur: style de vie, habitudes… • La fonction "principale" • L'expérience qui en découle
• Quelles sont les particularités d'usage qui font que votre
application fait sens sur un mobile? • Est-ce la situation? Ou bien une fonctionnalité
spécifique du mobile? • Le téléphone est un outil social: votre application tire-t-
elle partie de cet aspect?
• Pourquoi ne pas travailler avec un ergonome et/ou un designer?
Développer mobile…
• Choisir ses outils • Un Widget pour une application web simple et rapide • Du code natif pour des hautes performances • Du code managé pour des applications aux
fonctionnalités riches • Tester avec des vrais terminaux
• Différentes Résolutions: QVGA, VGA, WVGA minimum! • Différents Form-Factors (tactile, non tactile?)
• Tester avec des vraies connexions de données • 3G, Edge, GPRS…
• Connaitre ses limites • Mémoire, CPU • Ecran!
Penser mobile…
• Batterie! • Couper les timers quand l'application est en background • Limiter l'usage des connexions data, du GPS… • Éviter les animations inutiles
• Input! (texte, interaction app/user) • Stocker les préférences de l'utilisateur • Créer des habitudes
• On pense qu'il y a toujours quelque chose à coté! • Manipulable d'un doigt, en regardant d'un œil
• Scrolling uni-directionnel! • Limiter le nombre d'informations • Différentier clairement les différents éléments • Ne pas "occuper" le regard: Informer != Distraire
• La fonction téléphone doit toujours primer!
DÉVELOPPPER POUR LES WINDOWS PHONES
Les outils
• Développement dans Visual Studio • SDK Windows Mobile 6 Refresh + DRK Windows Mobile
6.5
• Le choix des modèles de développement • Développement natif (Win32) • Développement .NET (Compact Framework) • Développement Web (Widgets)
• Et bien sur:
• Emulateurs riches (incluant stack cellulaire, GPS, etc) • Outils de tests (unitaires/monkey)
Les Ressources:
• http://developer.windowsmobile.com • Le Centre de Développement MSDN
• http://msdn.microsoft.com/fr-fr/windowsmobile • Forums • Documentation complète, exhaustive, annotée par la
communauté • Contenu technique mis à jour régulièrement • Coach
• Codes d'exemples livrés avec le SDK • Quasiment tous les aspects du téléphone sont couverts
• Communauté active • Forums, Mails, Newsgroups, Blogs, Toolkits…
• Réseau de partenaires hyper qualifiés • Relation privilégiée avec Microsoft, régulièrement mis en avant
lors des évènements
• Code Natif: • Win32, MFC, C/C++ L’intelligence est dans le téléphone, c’est la solution la plus performante, mais il
faut connaitre Win32, ou pire, les MFC
• Code Managé • .NET Compact Framework, C#/VB.NET …
L’intelligence est dans le téléphone, avec une grosse base de classes pour accélérer le développement: accès à toutes les fonctionnalités du téléphone
• Les Widgets • HTML, CSS, Javascript, XML…
L’intelligence est en partie dans le téléphone, et en partie sur le Web: le meilleur compromis entre contenu statique, utilisation de la bande passage et richesse du web
Choisir ses armes
LE DÉVELOPPEMENT NATIF/MANAGÉ
• Le développeur a accès à tout le téléphone
• L'interop (P/Invoke) est autorisée
• Clairement la solution de choix pour les interfaces riches et réactives
• De très nombreux toolkits sont disponibles sur le marché pour pousser l'expérience encore plus loin
• Interfaces Riches, Géolocalisation, Webservices…
Code Natif et Managé
• Disponible en code natif
• Il s'agit de messages WM_GESTURE dans la boucle des messages
• Wrapper managé dans la communauté
• Un objet à rajouter dans son formulaire pour intercepter les messages
La Gesture API
La Gesture API
• Géolocalisation : GPSID, BingMaps
• Messages/Emails: MAPI
• Contacts/Taches/Calendrier: POOM
• WebServices: WCF & LINQ
• Interfaces Riches: Le GDI
Plus, ce que produit la communauté:
SkyHook, GoogleMaps, Resco, Mirabyte, BeeMobile, Fluid, AlphaMobile Controls, etc
Les autres sujets
Utilisation du GPS
En utilisant le wrapper livré dans les samples codes du SDK
using Microsoft.WindowsMobile.Samples.Location; … Gps MyGps = new Gps(); MyGps.Open(); GpsPosition myPosition = MyGps.GetPosition(); MyGps.Close(); if (myPosition.LatitudeValid && myPosition.LongitudeValid) { //DO Something
}
POOM: les contacts
using Microsoft.WindowsMobile.PocketOutlook; … using (OutlookSession session = new OutlookSession()) { currentNumberOfContacts = session.Contacts.Items.Count; // Ajout d'un contact Contact ct = new Contact(); ct.FirstName = "John"; ct.LastName = "Doe" + i.ToString(); ct.Email1Address = "john.doe" + i.ToString() + "@contoso.com"; session.Contacts.Items.Add(ct); }
POOM: l'interception de SMS
using Microsoft.WindowsMobile.PocketOutlook.MessageInterception; … MessageInterceptor interceptor = new MessageInterceptor(InterceptionAction.NotifyAndDelete); interceptor.MessageCondition = new MessageCondition(); interceptor.MessageCondition.CaseSensitive = true; interceptor.MessageCondition.ComparisonType = MessagePropertyComparisonType.Equal; interceptor.MessageCondition.ComparisonValue = "toto"; interceptor.MessageCondition.Property = MessageProperty.Sender;
L'utilisation de la Caméra
CameraCaptureDialog myCamDialog = new CameraCaptureDialog(); myCamDialog.Owner = this; try { if (DialogResult.OK == myCamDialog.ShowDialog()) { pictureBox1.Image = new Bitmap(myCamDialog.FileName); pictureBox1.Invalidate(); MessageBox.Show(msg); } } catch (InvalidOperationException) { MessageBox.Show("The camera on this device is not supported."); } finally { myCamDialog.Dispose(); myCamDialog = null; }
Cartographie avec Bing Maps MapView[] myViews = new MapView[1]; ViewByScale myView = new ViewByScale(); mapCenter = new LatLong(); mapCenter.Latitude = Latitude; mapCenter.Longitude = Longitude; myView.CenterPoint = mapCenter; myView.MapScale = mapScale; myViews[0] = myView; Pushpin[] myPushpins = new Pushpin[1]; myPushpins[0] = new Pushpin(); myPushpins[0].IconDataSource = "MapPoint.Icons"; myPushpins[0].IconName = "31"; myPushpins[0].Label = "Location"; myPushpins[0].LatLong = new LatLong(); myPushpins[0].LatLong.Latitude = mapCenter.Latitude; myPushpins[0].LatLong.Longitude = mapCenter.Longitude; MapSpecification mapSpec = new MapSpecification(); mapSpec.DataSourceName = "MapPoint.EU"; mapSpec.Views = myViews; mapSpec.Pushpins = myPushpins; MapImage[] mapImages = renderService.GetMap(mapSpec); if (mapImages[0] != null) { pbMap.Image = new System.Drawing.Bitmap(new System.IO.MemoryStream(mapImages[0].MimeData.Bits)); pbMap.Visible = true; }
LE DEVELOPPEMENT DE WIDGETS
Qu'est ce qu'un widget ?
• Une application centrée sur une fonctionnalité • Basé sur une norme W3C
• Créé avec des technologies connues du monde du web • HTML
• Cascading Style Sheets (CSS)
• JavaScript
• Accès instantané à une information
• Horaires de bus, train, avion, …
• Météo, news, trafic routier
• Outil marketing
• Applications « addictives »
• Comptes à rebours
• Outil de travail
• Jeux
Quelques exemples d'usages
Les widgets en quelques mots
• Applications interactives
• Développés avec les technologies du web
• Visual Studio
• Expression Web
• Look sympa
• Diffusez votre widget sur Windows Marketplace
Développement d'un Widget
Suivez le coach MSDN !
WINDOWS MARKETPLACE FOR MOBILE
Résumé du service Marketplace
Microsoft Confidential
Présence de Marketplace dès le menu Démarrer
Organisation simple + recherche par mots clé
Catégorisation (13 catégories) Animation commerciale de
Marketplace – showcase + notation utilisateurs
Téléchargement et installation des applis en un clic
Fonctionnement
Contenus
Logiciels Windows Mobile natifs (langage C++ ou C#) Logiciels Windows Mobile managé (.net compact framework) Widgets (javascript, html) Thèmes (futur)
Sonneries, logos Musique Applications Java Applications directement concurrentes à Marketplace Navigation GPS, voix sur IP Violence, pornographie, promotion de l’utilisation d’alcool, de tabac ou
de substances illicites… Application exécutant du code non Windows Mobile (flash…)
Éditeurs / annonceurs
Certification 99$ / appli /
an
Windows Marketplace CB ou facturation opérateur
Si l’opérateur participe à la facturation, Microsoft partage une partie des revenus avec lui
Audience et marketing
4,6016,42
29,8612,96
75,47
192,78
0,40
1,17
1,80
0,00
0,50
1,00
1,50
2,00
0
50
100
150
200
250
FY'10 FY'11 FY'12
Million devices
Million downloads
Total revenue (M€) Total downloads (M)
Marketplace enabled devices (M)
Plus de 800k terminaux équipés de Marketplace fin FY10
Co-marketing Windows Phone + applications dès le lancement (autopromo + marketing online, communiqués de presse conjoints etc.)
http://developer.windowsmobile.com
• Type d'application
• Ne pas faire de concurrence à Marketplace
• Type de contenu
• Pas de contenu piraté
• Régionalisation des applications
• Utiliser la langue de la région qu'on vise
• Critères techniques
• Ne pas "bricker" le téléphone
Les règles de Marketplace