Manipulation 4 : Application de «Change».

Documents pareils
TP2 : Client d une BDD SqlServer

BIRT (Business Intelligence and Reporting Tools)

Les tablettes et l'extranet Intermixt Mode d'emploi

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

GUIDE D UTILISATION ADMINISTRATEUR

Tutorial pour l installation et l utilisation de CREO et de Windchill

Modules InnovationCRM

Manuel d utilisation DeveryLoc

KWISATZ MODULE PRESTASHOP

Guide de démarrage rapide. (pour la version 5.0.)

WINDOWS SHAREPOINT SERVICES 2007

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Guide de l utilisateur Mikogo Version Windows

Apps Sage : les 10 étapes pour publier vos données dans le Cloud.

Configuration de Zabbix

Itium XP. Guide Utilisateur

Comment accéder à d Internet Explorer

Sur un ordinateur exécutant Windows 2000 Server Ayant une adresse IP statique

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

KPI (Key Performance Indicator) dans MOSS

C RÉATION DE PDF (1) Cours SEM 205 Mieux utiliser le format PDF

Définition des Webservices Ordre de paiement par . Version 1.0


Tenrox. Guide d intégration Tenrox-Salesforce. Janvier Tenrox. Tous droits réservés.

Configuration du driver SIP dans ALERT. V2

Configuration d'un trunk SIP OpenIP sur un IPBX ShoreTel

Paiement sécurisé sur Internet. Tableau de bord Commerçant

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Guide de démarrage rapide

clé Internet 3g+ Guide d installation

EIP 2012 Projet Livepad. Documentation technique 1.5

DNS ( DOMAIN NAME SYSTEM)

Le langage C. Séance n 4

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

ÉCOLE POLYTECHNIQUE FÉDÉRALE DE LAUSANNE. Manuel de formation. Achats

Plateforme PAYZEN. Définition de Web-services

KWISATZ_TUTO_module_magento novembre 2012 KWISATZ MODULE MAGENTO

Programmation MacOSX / ios


domovea Portier tebis

Windows Internet Name Service (WINS)

Utilisation du plugin AppliDis SLB (Smart Load Balancing)

Tutorial Terminal Server sous

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

CONFIGURATION DE BASE. 6, Rue de l'industrie BP130 SOULTZ GUEBWILLER Cedex. Fax.: Tel.:

Accès au Serveur de PAIE «SPV» par INTERNET Paramétrage du poste de travail «Windows»

Micro-ordinateurs, informations, idées, trucs et astuces. Utiliser une caméra IP Trendnet IP-TV110. Auteur : François CHAUSSON

Configuration du nouveau Bureau Virtuel (BV) collaboratif de Lyon I

INTRODUCTION AUX TESTS CODES DE L INTERFACE UTILISATEUR

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

Créer et partager des fichiers

Préparation d une flotte d IPADS dans une école via ITUNES

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Atelier Le gestionnaire de fichier

FEN FICHE EMPLOIS NUISANCES

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

TUTORIEL Qualit Eval. Introduction :

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

SOMMAIRE ÉTAPES OBLIGATOIRES. Récupérer le connecteur... 3

sommaire ÉTAPES OBLIGATOIRES Récupérer le connecteur... 3

PROCÉDURE D AIDE AU PARAMÉTRAGE

Installation DNS, AD, DHCP

UserLock Quoi de neuf dans UserLock? Version 8.5

PHP 5.4 Développez un site web dynamique et interactif

CTIconnect PRO. Guide Rapide

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

Dongle WiFi de QUMI Manuel de l utilisateur

Guide Utilisateur Transnet

Développez vos applications pour. iphone, ipod Touch, ipad

GUIDE MEMBRE ESPACE COLLABORATIF. Février 2012

Foire aux questions (FAQ)

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

TP 1 : LES COMMANDES RESEAUX Matière: RESEAUX LOCAUX

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

Fiche produit Site Monitor v4

Écriture de journal. (Virement de dépense)

Optimiser pour les appareils mobiles

Guide de l administrateur de mexi

Modules ICI relais & EXAPAQ Predict v4.0

Edutab. gestion centralisée de tablettes Android

Contrôleur de communications réseau. Guide de configuration rapide DN

Machine virtuelle Java pour Palm TX

GUIDE DE DÉMARRAGE. SitagriPro Infinite FINANCEAGRI. Un service. c o r p o r a t e

Manuel logiciel client for Android

TUTORIEL INSTALLATION D UNE WENBOX ETHERNET DE WENGO SUR UN MODEM ROUTEUR DG834 G DE NETGEAR

Notes de mise à jour Fiery Print Controller AR-PE3, version 1.01 pour AR-C330

But de cette présentation

SOMMAIRE. Comment se connecter?

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0

Suite logicielle ZOOM version 7.1 Guide d installation 94ZM-ZMJ1F-712

ESPACE COLLABORATIF SHAREPOINT

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

I) INTRODUCTION... 3 II) ENREGISTREMENT DE SON TYROS

Le GéoPortail du Jura Présentation des fonctionnalités de la version mobile

SAUVEGARDER SES DONNEES PERSONNELLES

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Documentation Liste des changements apportés

Guide de configuration. Logiciel de courriel

Créer un site WordPress

Transcription:

Manipulation 4 : Application de «Change». Première partie : Cette manipulation a pour but d utiliser un service Web afin d obtenir les taux de change appliqués entre les différentes monnaies référencées par leur code ISO. Pour accéder au service Web nous disposons d un utilitaire nommé WSDL2Obj 1 (dans sa version 0.7 beta au moment de la rédaction de ce document). Cet utilitaire qui remplace l utilitaire WSMakeStub fourni avec XCode pour Mac OS permet de générer les classes d accès à un service Web à partir de sa description WSDL. Le service Web utilisé est décrit à l URI suivante : http://www.webservicex.net/currencyconvertor.asmx?wsdl Dans un premier temps, afin que l objectif soit «plus clair» et aussi pour vous mettre «l eau à la bouche», voici une copie d écran de l application finale espérée : La fenêtre au démarrage de l application Création du projet et ajout des classes «relais» d accès au service Web 1. Créer un projet Xcode de type «Single View Application» et choisir une cible de type ipad. Décocher les options «Use Storyboard» et «use ARC». Par souci de cohérence avec le nommage utilisé dans la présentation, nommer le projet projetcurrency1. 2. Utiliser l utilitaire WSDL2Obj pour générer les classes d accès au service Web à partir de l URL de sa description WSDL. Ajouter l ensemble des fichiers générés à votre projet. 1 http://code.google.com/p/wsdl2objc/ Manipulation 4 : Application «taux de change» Page 1

3. Certaines des classes générées font appel à la bibliothèque libxml non incluse dans la configuration par défaut de XCode. Pour ajouter celle-ci à votre projet il est nécessaire : d ajouter le chemin /usr/include/libxml2 à la rubrique Header Search Paths, d ajouter l option lxml2 à la rubrique Other Linker Flags dans la configuration «Build Settings» du projet. Construire le projet afin de vérifier la bonne configuration de celui-ci. Les classes d accès au service Web se trouvent codées dans les fichiers CurrencyConvectorSvc. Nous allons utiliser en particulier : l énumération CurrencyConvertorSvc_Currency qui liste les codes ISO des monnaies et les fonctions : o CurrencyConvertorSvc_Currency_stringFromEnum o CurrencyConvertorSvc_Currency_enumFromString qui permettent d obtenir le code ISO dans une chaîne de caractère à partir de sa valeur d énumération et inversement. la classe CurrencyConvertorSvc_ConversionRate qui permet de paramétrer la requête auprès du service Web en lui spécifiant les monnaies source et destination pour lesquelles on désire connaître le taux de conversion, la classe CurrencyConvertorSvc classe du contrat de service qui permet de récupérer un objet de type CurrencyConvertorSoapBinding à partir de la méthode CurrencyConvertorSoapBinding, la classe CurrencyConvertorSoapBinding, classe de liaison au service Web qui permet de lui adresser une requête via http/soap, elle dispose entre autres d une méthode ConversionRateUsingParameters qui attend un paramètre CurrencyConvertorSvc_ConversionRate et retourne le taux de conversion correspondant dans un objet CurrencyConvertorSvc_ConversionRateResponse, la classe CurrencyConvertorSvc_ConversionRateResponse réponse du service Web qui dispose d un attribut bodyparts, corps de la réponse permettant d obtenir «enfin» la réponse tant attendue grâce à la méthode ConversionRateResult. Mais avant d avoir le plaisir de manipuler tous ces objets nous allons préparer l interface de notre application Mise en forme de la vue 4. Compléter la vue de votre application ViewController.xib avec les contrôles nécessaires à lui donner l allure suivante : tpsource tpdestination texttauxsd labelsource labeldestination texttauxds Manipulation 4 : Application «taux de change» Page 2

5. Ajouter les membres suivants au contrôleur de vue ViewController ainsi que les propriétés associées pour les contrôles de type «Interface Builder» : IBOutlet UIPickerView* tpsource; // Picker View source IBOutlet UIPickerView* tpdestination; // Picker View destination NSMutableArray* tabmonnaie; // Tableau datasource des Pickers IBOutlet UILabel* labelsource; // Label monnaie source IBOutlet UILabel* labeldestination; // Label monnaie destination IBOutlet UITextField* texttauxsd; // texte taux source->destination IBOutlet UITextField* texttauxds; // texte taux destination->source CurrencyConvertorSvc_Currency source ; // choix courant CurrencyConvertorSvc_Currency destination; 6. Ajouter la méthode dealloc au contrôleur de vue et libérer les objets associés aux propriétés de la vue. Le tableau tabmonnaie va être initialisé avec l ensemble des codes ISO des monnaies spécifiées par l énumération CurrencyConvector et servira de «data source» pour initialiser les «Picker View» permettant de sélectionner la monnaie locale (source) et destination. Les labels labelsource et labeldestination serviront à afficher la monnaie locale et destination sélectionnées et les énumérations source et destination serviront à mémoriser les codes iso correspondant à la sélection courante de ces monnaies. Au démarrage de l application les «Picker View» doivent être initialisés avec l ensemble des codes iso des monnaies et positionnés sur la monnaie euro. 7. Compléter la méthode de chargement de la vue «ViewDidLoad» afin : d initialiser le tableau tabmonnaie avec l ensemble des codes iso de l énumération CurrencyConvector, de positionner les «Picker View» source et destination sur la monnaie euro, de mémoriser la valeur d énumération pour la monnaie euro dans les attributs source et destination, d afficher le code de cette monnaie euro dans les labels labelsource et labeldestination. La classe UIPickerView implémente deux protocoles : le protocole UIPickerViewDataSource pour définir le nombre de composants (rouleaux) du «Picker View» ainsi que le nombre d éléments par composant, le protocole UIPickerViewDelegate pour remplir les composants et définir les sélections. 8. Après avoir jeté un coup d œil au protocole UIPickerViewDataSource dans l aide de XCode, copier les prototypes des deux méthodes (requires) du protocole dans votre classe vue afin de les coder : la méthode numberofcomponentsinpickerview doit retourner le nombre de composants du «Picker View» pour lequel elle est appelée (passé en paramètre), la méthode numberofrowsincomponent doit retourner le nombre d éléments à afficher pour le composant du «Picker View» pour lequel elle est appelée (passé en paramètres). 9. Après avoir jeté un coup d œil au protocole UIPickerViewDelegate dans l aide de XCode, copier les prototypes des méthodes suivantes dans votre classe vue afin de les coder : pickerview:titleforrow:forcomponent: qui est appelée pour chaque composant de chaque «Picker View» autant de fois qu il y a d éléments dans le composant, elle sert donc à initialiser les éléments du composant du «Picker View» passés en paramètre, pickerview:didselectrow:incomponent: qui est appelée lorsque l utilisateur sélectionne un élément d un composant donné. Manipulation 4 : Application «taux de change» Page 3

10. Coder la méthode pickerview:titleforrow:forcomponent: afin d initialiser les «Picker View» avec l ensemble des codes iso des monnaies. 11. Coder la méthode pickerview:didselectrow:incomponent: afin : d afficher dans le label correspondant le code iso de la monnaie sélectionnée, de mémoriser la valeur d énumération de cette monnaie dans l attribut correspondant (source ou destination). Vérifier le bon fonctionnement de cette partie avant de poursuivre. Il faut à présent interroger le service Web pour récupérer le taux de change associé aux monnaies sélectionnées et mettre à jour les zones de texte texttauxsd et texttaudds en conséquence. Pour cela ajouter la méthode suivante à votre classe contrôleur de vue : -(NSNumber*)getTauxChangeDepuisWS:(CurrencyConvertorSvc_Currency)from depuis:(currencyconvertorsvc_currency)to 12. Coder cette méthode afin qu elle interroge le service Web pour obtenir le taux de conversion appliqué entre les monnaies from et to et qu elle retourne le taux de conversion obtenu. 13. Compléter la méthode pickerview:didselectrow:incomponent: afin d afficher les taux de conversion source vers destination et destination vers source dans les zones de texte correspondantes. Vérifier le bon fonctionnement de l ensemble. Deuxième partie : Dans cette deuxième partie nous allons améliorer notre application en lui apportant les compléments suivants : l affichage du nom des monnaies en plus du code iso dans les «Picker View» et les labels associés, la possibilité d éditer un montant pour lequel on désire calculer le change, l exécution des appels au service Web dans un «thread», l affichage de l activité à l aide d un contrôle pendant «Activity Indicator» animé pendant les accès au service Web, optionnellement, l ajout d une image de fond à la vue. Pour l affichage du nom des monnaies nous allons utiliser un fichier de chaînes «extension.strings» pour lequel les clés d entrées seront les codes iso des monnaies et les valeurs la description de la monnaie associée. Le fichier «codesiso.strings» réalisé à partir des données iso des monnaies prises sur Wikipédia vous est fourni à cette fin. 1. Ajouter ce fichier à votre projet et modifier le code de chargement de la vue et d initialisation des «Picker View» pour ajouter la description de la monnaie à la suite du code iso dans les «Picker View» et les labels associés, comme présenté dans la copie d écran de l application en page 1. 2. Modifier le code de la méthode pickerview:didselectrow:incomponent: pour prendre en compte ces changements. Vérifier la prise en compte de ces changements et le bon fonctionnement de l application. 3. Ajouter les membres suivants au contrôleur de vue ViewController ainsi que les propriétés associées : IBOutlet UITextField* textcalculsd; // texte montant source Manipulation 4 : Application «taux de change» Page 4

IBOutlet UITextField* textcalculds; // texte montant destination Ces contrôles serviront à afficher le montant à convertir et son résultat, dans les deux sens de conversion. 4. Ajouter les méthodes suivantes à votre classe contrôleur de vue : -(IBAction)calculChange:(id)sender -(IBAction)calculInverseChange:(id)sender Associer ces méthodes à l événement «modification de la zone d édition» des contrôles textcalculsd et textcalculds respectivement. Elles serviront à calculer le montant du change selon le taux actif. La méthode textcalculsd sera déclenchée si on modifie le montant source pour mettre à jour le montant destination et la méthode textcalculds fera l inverse. 5. Coder et tester les méthodes calculchange et calculinversechange. Nous allons à présent faire effectuer les requêtes auprès du service web dans un thread détaché de la vue. L activation d un thread détaché du thread courant se fait à l aide de la méthode statique suivante de la classe NSThread : detachnewthreadselector:totarget:withobject: Avec : un premier argument (sélecteur), qui définit la méthode point d entrée du thread, un deuxième argument (cible), qui définit l objet propriétaire où trouver la méthode précédente, un dernier argument de type (id), pointeur sur un objet passé en paramètre au point d entrée du thread. Pour des raisons d atomicité un thread détaché ne peut pas accéder directement aux contrôles graphiques gérés par le thread principal de l application. A cette fin, l activation d une méthode du thread principal de l application depuis le code exécuté par le thread se fait à l aide de la méthode suivante de la classe NSObject : performselectoronmainthread:withobject:waituntildone: Avec : un premier argument (sélecteur), qui définit la méthode à invoquer, un deuxième argument de type (id), pointeur sur un objet passé en paramètre à la méthode précédente, un dernier argument qui définit si le thread doit se bloquer en attente de la prise en compte de ce message par le thread principal ou non. Nous allons donc ajouter les deux méthodes suivantes à notre classe contrôleur de vue : -(void)gettauxchangedepuiswswiththread:(currencyconvertorsvc_conversionrate*)param -(void)updateaffichageviathread:(nsnumber*)res La première sera le point d entrée du thread et effectuera la requête auprès du service Web puis déclenchera la seconde afin que celle-ci mette à jour la vue. 6. Coder ces deux méthodes puis modifier la méthode pickerview:didselectrow:incomponent: pour que la requête au service Web se fasse dans un thread détaché. Vérifier le bon fonctionnement de l ensemble. Manipulation 4 : Application «taux de change» Page 5

Un codage possible des deux méthodes précédentes ainsi que de la méthode pickerview:didselectrow:incomponent: serait le suivant : - (void)pickerview:(uipickerview *)pickerview didselectrow:(nsinteger)row incomponent:(nsinteger)component if(pickerview==tpsource) labelsource.text = NSLocalizedStringFromTable(CurrencyConvertorSvc_Currency_stringFromEnum(row+1), @"codesiso",@""); source = row+1 ; else labeldestination.text = NSLocalizedStringFromTable(CurrencyConvertorSvc_Currency_stringFromEnum(row+1), @"codesiso",@""); destination = row+1; CurrencyConvertorSvc_ConversionRate* param = [CurrencyConvertorSvc_ConversionRate new]; param.fromcurrency = source; param.tocurrency = destination; [NSThread detachnewthreadselector:@selector(gettauxchangedepuiswswiththread:) totarget:self withobject:param]; [param release]; -(void)gettauxchangedepuiswswiththread:(currencyconvertorsvc_conversionrate*)param activite.hidden = NO; [activite startanimating]; CurrencyConvertorSoapBinding* binding = [CurrencyConvertorSvc CurrencyConvertorSoapBinding] ; //binding.logxmlinout = YES; CurrencyConvertorSoapBindingResponse * response = [binding ConversionRateUsingParameters:param]; for(id repbody in response.bodyparts) if([repbody iskindofclass:[currencyconvertorsvc_conversionrateresponse class]]) [self performselectoronmainthread:@selector(updateaffichageviathread:) withobject:[repbody ConversionRateResult] waituntildone:no]; -(void)updateaffichageviathread:(nsnumber*)res if([res floatvalue]!= 0) NSString* nsd = [[NSString alloc] initwithformat:@"%.5f",[res floatvalue]]; NSString* nds = [[NSString alloc] initwithformat:@"%.5f",(float)1/[res floatvalue]]; texttauxsd.text = nsd; texttauxds.text = nds; [self calculchange:nil]; [nsd release]; [nds release]; else texttauxsd.text = @"Taux indéfini"; texttauxds.text = @"Taux indéfini"; 7. Ajouter à votre vue un contrôle indicateur d activité. 8. Ajouter l attribut correspondant au contrôleur de vue ainsi que la propriété associée : IBOutlet UIActivityIndicatorView* activite; Modifier le code de votre projet pour que l indicateur d activité s affiche et s anime pendant la durée des requêtes auprès du service Web. 9. Si vous le souhaitez, vous pouvez agrémenter l aspect visuel de votre application en lui ajoutant un contrôle «Image View» placé à l arrière de tous les contrôles actuels de la vue et lui associer l image fournie «apple-chrome-ipad-1024x768.jpg». 10. Vérifier que votre application reste correctement organisée lors des rotations du périphérique et si ce n est pas le cas ajoutez les «ancrages» nécessaires. Manipulation 4 : Application «taux de change» Page 6

Troisième partie : Dans cette troisième et dernière partie nous allons ajouter à notre application les compléments suivants : une rubrique de réglages pour notre application dans le menu «Réglages» général du matériel, la prise en compte des notifications liées aux changements des réglages de notre application ainsi qu aux changements liés à la connexion Internet de l appareil. Remarque : le simulateur ne permettant pas, à la date de rédaction de ce document, la prise en compte dans les Réglages de la désactivation Wifi ni de l activation 3G, les tests relatifs à cette partie devront être réalisés sur un appareil «réel». L ajout de fonctionnalités de réglages au menu «Réglages» général du matériel se fait en ajoutant une ressource «Settings.bundle» au projet. 1. Ajouter un nouveau fichier ressource du type «Settings.bundle» à votre projet et visualiser son contenu, vous devez trouver : un fichier Root.plist obligatoire qui contient la description des rubriques de réglages associées à votre application (4 exemples dans le fichier par défaut), un dossier par langue ou localisation prise en compte par votre application avec pour chaque langue les couples «clé-valeurs» habituels qui seront utilisés dans le menu réglages. Vous pouvez d ores et déjà exécuter votre application et constater l existence du menu de réglages pour votre application. 2. Editer le fichier Root.plist afin de le modifier de la façon suivante : modifier le titre de l application, modifier l Item de type «Toggle Switch» afin qu il serve à activer/désactiver le signalement de l utilisation de l accès 3G, on identifiera cet item avec un identificateur nommé enabled3g, ajouter un Item de type «Text Field» pour éditer l url du service Web, on identifiera cet item avec un identificateur nommé urlserviceweb, supprimer les autres items non utiles à notre application. Le fichier devrait ressembler à l exemple suivant : L accès aux dictionnaires des données de paramétrage se fait à l aide de la classe NSUserDefaults. Manipulation 4 : Application «taux de change» Page 7

La création des données de paramétrage de l application nécessite qu un premier accès en écriture soit réalisé pour la création du «cache» de paramétrage de l application. Ensuite la méthode synchronize est automatiquement et périodiquement appelée pour maintenir l état de ce cache. L exemple suivant montre l accès à la donnée de paramétrage identifiée par la clé urlserviceweb, une première fois en écriture pour créer le cache puis une seconde fois en lecture. Création du cache : NSUserDefaults *defaults = [NSUserDefaults standarduserdefaults]; NSDictionary *appdefaults = [NSDictionary dictionarywithobject:@"http://www.webservicex.net" forkey:@"urlserviceweb"]; [defaults registerdefaults:appdefaults]; [defaults synchronize]; Accès en lecture : NSUserDefaults *defaults = [NSUserDefaults standarduserdefaults]; NSString* url = [defaults stringforkey:@"urlserviceweb"]; 3. Compléter la méthode de chargement de l application «didfinishlaunchingwithoptions» afin qu elle crée le cache de paramétrage. 4. Modifier le code de la classe d accès au service Web CurrencyConvertorSvc afin qu elle utilise l URL associée aux réglages de l application d identificateur urlserviceweb. Les méthodes à modifier sont initialize, CurrencyConvertorSoapBinding et CurrencyConvertorSoap12Binding. Tester la bonne prise en compte de ce paramètre de réglage au sein de votre application. Il pourrait être également utile que l application soit prévenue (notifiée) si l on venait à modifier les réglages de celle-ci alors qu elle est active. La classe NSNotificationCenter permet de s abonner à des notifications de changement sur des variables système et de réglage. L exemple suivant réalise l abonnement à l observation des variables de réglage de l application, celles-ci faisant partie du centre de notification par défaut d une application. En cas de modification des paramètres de réglage, la méthode setreglageactivation3g de l objet courant sera appelée. [[NSNotificationCenter defaultcenter] addobserver:self selector:@selector(setreglageactivation3g:) name:nsuserdefaultsdidchangenotification object:nil]; 5. Compléter la méthode de chargement de l application «didfinishlaunchingwithoptions» afin de s abonner aux changements des paramètres de réglage. On nommera la méthode associée setreglageactivation3g comme dans l exemple précédent. Tester la prise en compte des notifications en affichant simplement un message d alerte (classe UIAlertView). On souhaite à présent pousser un peu plus loin la gestion des notifications afin qu en cas de modification des réglages de l application et/ou du système on soit prévenu selon les situations suivantes : si le paramètre de réglage de l application enabled3g (Signaler l'utilisation de l'accès 3G) est à YES l utilisateur sera averti (notifié) à l aide d un message d alerte dans les situations suivantes : o l accès Internet de l appareil utilise la liaison 3G, o l accès Internet de l appareil n est pas disponible. si le paramètre de réglage de l application enabled3g est à NO pas de notification relative à l accès Internet. Manipulation 4 : Application «taux de change» Page 8

Pour ce faire on va utiliser une classe fournie dans les exemples de la documentation XCode : la classe Reachability. Cette classe s appuie sur le framework SystemConfiguration et permet en particulier d installer des notifications sur les modifications du média d accès Internet. 6. Ajouter les fichiers source de la classe Reachability à votre projet puis ajouter un attribut de cette classe à la classe délégué de votre application AppDelegate. 7. Instancier cet objet Reachability au chargement de l application à l aide de la méthode reachabilityforinternetconnection puis le libérer dans la méthode dealloc. 8. Modifier la méthode setreglageactivation3g afin de tester le paramètre de réglage de l application enabled3g puis : s il est à YES : ajouter l observation de la notification kreachabilitychangednotification de la classe Reachability, celle-ci signalant un changement du mode d accès au réseau Internet. Vous nommerez la méthode associée à cette notification testnetworkstatus. Le démarrage de l observation se fait par appel de la méthode startnotifier. s il est à NO : supprimer l observation de la notification kreachabilitychangednotification. L arrêt de l observation se fait par appel de la méthode stopnotifier. 9. Coder la méthode testnetworkstatus afin d afficher un message d alerte signalant un accès Internet non disponible ainsi qu un message d alerte signalant un accès Internet utilisant le média 3G. Vous disposez pour cela de la méthode currentreachabilitystatus qui retourne une énumération positionnée sur le type d accès Internet courant. Vérifier le bon fonctionnement de ces notifications. Enfin et pour finir il pourrait être utile d alerter l utilisateur d un accès Internet non disponible ou utilisant l accès 3G au démarrage de l application, compléter la méthode didfinishlaunchingwithoptions à cette fin et valider votre application finalisée. Manipulation 4 : Application «taux de change» Page 9