Gestion des notifications et des événements



Documents pareils
Messagerie asynchrone et Services Web

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Ecran principal à l ouverture du logiciel

Programmation MacOSX / ios

Manipulation 4 : Application de «Change».

API FTP SMSENVOI V1.1

NSY102. Conception de logiciels Intranet Introduction

Urbanisme du Système d Information et EAI

WEA Un Gérant d'objets Persistants pour des environnements distribués

SMS Prérequis SOMMAIRE

EFIDEM easy messaging systems. EFIDEM SAS 3 rue de Téhéran Paris T : F : info@efidem.

Editeurs de logiciels. Votre guide SMS

Swisscom Webmail - mode d emploi

Offre Sacs de Livres

F. Barthélemy. 17 mai 2005

Manuel : Comment faire sa newsletter

NFP111 Systèmes et Applications Réparties

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

2 Chapitre 1 Introduction

Patrons de Conception (Design Patterns)

Mise en œuvre des serveurs d application

Cours de Génie Logiciel

Un ordonnanceur stupide

EXA1415 : Annotations

REQUEA. v PD 20 mars Mouvements d arrivée / départ de personnels Description produit

7. Configuration du mail-client IMAP IMAP4 dans Outlook Express IMAP4 dans Netscape Messenger...6

Optimiser pour les appareils mobiles

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Traduction des Langages : Le Compilateur Micro Java

LIVRE BLANC DÉCEMBRE 2013 COMMENT UTILISER LE SMS POUR FIDÉLISER ET GÉNÉRER DU TRAFIC AU SEIN DE VOTRE CLUB?

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Composants Logiciels. Le modèle de composant de CORBA. Plan

Environnements de Développement

Intégration de systèmes

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

EFIDEM easy messaging systems

Services OSI. if G.Beuchot. Services Application Services Présentation - Session Services Transport - Réseaux - Liaison de Données - Physique

pas à pas prise en main du service sur le web Le Cloud

Les cantons, vu les art. 15, 16 et 34 de la loi fédérale sur les loteries et les paris professionnels du 8 juin , arrêtent:

Choisir le mode d envoi souhaité. Option 1 : Envoyer un SMS à un nombre réduit de numéros (0 10 )

GUIDE D UTILISATION CHRONOTRACE Pour suivre vos envois dans le monde entier

TNT Electronic Services

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

OpenVPN Manager. Projet M2-ESECURE - Robin BUREL. Date 10 Janvier 2013 Tuteur : M. Richard

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Le transfert des déchets

Service de notification pour colis et Swiss-Express

Guide d utilisation IPAB-ASSOCIATION v5.0 GUIDE D UTILISATION. à destination des associations et organismes sans but lucratif.

Communiquer avec un ou plusieurs interlocuteurs. Michel Futtersack, Faculté de Droit, Université Paris Descartes, Sorbonne Paris Cité

Guide de l utilisateur Mikogo Version Windows

Premiers Pas en Programmation Objet : les Classes et les Objets

PRESENTATION MOBILE GLOBE. Jusqu à 80% d économies sur vos factures En toute liberté

EIP 2012 Projet Livepad. Documentation technique 1.5

DÉBUTER AVEC LES RÉSEAUX SOCIAUX

18 TCP Les protocoles de domaines d applications

Publipostage avec Open Office Writer et Open Office Calc

Utilisation d objets : String et ArrayList

Créer un premier document avec Pages

EBICS ou SWIFNET? : Préparez-vous au nouveau standard!

Service des ressources informatiques - Conseil Scolaire de District Catholique Centre-Sud Page 1

Projet Active Object

Préparation de commande. En cas d absence du destinataire. Retour des produits/échanges

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

MATRICE DES FONCTIONNALITES

Journée IJD. Moussa Tari Bako Bachir. 25 juin 2012 ARLES/INRIA. Introduction Travail Chez ARLES

L enseignement de méthodes agiles dans un contexte d apprentissage actif

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

SIEBEL CRM ON DEMAND MARKETING

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

L ing efficace. Guillaume Fleureau. Toutes les techniques pour atteindre vos destinataires. Groupe Eyrolles, 2013 ISBN :

MODE OPERATOIRE CONCERNANT LES BONS DE COMMANDE SUR MARCHE ET LA NOUVELLE PLATEFORME EFOLIA (ENTREPRISE)

Introduction aux concepts d ez Publish

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Gestion distribuée (par sockets) de banque en Java

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Services de SMS professionnels

LES FICHES Domaines. Domaine D1. Travailler dans un environnement numérique

et Groupe Eyrolles, 2006, ISBN :

[DOSSIER 1 - UN ORDINATEUR, QU EST-CE QUE C EST?] 30 mars 2010

Migration NGN: témoignage suisse

Service de dématérialisation du BOAMP

Derrière toi Une machine virtuelle!

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors

Création d un service web avec NetBeans 5.5 et SJAS 9

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011

CH.3 SYSTÈMES D'EXPLOITATION

SMS INFO & TABLEAU DE BORD CLIENT. Avec Cloud Communication Solution (C.C.S).

RAPPORT DE CONCEPTION UML :

Remote Method Invocation Les classes implémentant Serializable

Facebook. Pour une organisation ou une entreprise!

White Paper - Livre Blanc

LOI N portant Code des Postes

LES NOUVELLES CONTRAINTES EN MATIERE DE MARCHES PUBLICS

Pourquoi toutes les entreprises peuvent se priver de centrale téléphonique?

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

Solutions de gestion Catalyseur de performance

Transcription:

4 Gestion des notifications et des événements Dans ce chapitre, nous abordons le système de notifications utilisé en Objective-C. Dans le jargon Cocoa, les termes événement (event) et notifi cation (notifi cation) désignent deux concepts très proches, mais distincts, qui sont en général confondus dans par les autres langages de programmation sous le terme événement (par exemple, par Java ou C#). Pour nous, le terme événement désigne une action provenant du matériel (souris, clavier, etc.), tandis que notification désigne le moyen par lequel un objet notifie les autres objets de l occurrence d un

138 CHAPITRE 4 Gestion des notifications et des événements événement logiciel. Ce système ce base sur le modèle de conception (design pattern ) appelé publication/abonnement (publish/subscribe) qui fera l objet de la première section. Principe du modèle de conception publication/abonnement Les développeurs C# et Java sont habitués à l utilisation d objets de type événement pour la gestion des événements : C# possède le mot-clé event permettant d introduire un membre de type événement parmi les différentes variables d instance de votre classe. Java permet d obtenir le même résultat, mais en dérivant une nouvelle classe depuis java. util.eventobject. Le modèle de conception implémenté ici au niveau langage est le modèle observateur/observable. Ce modèle consiste donc à mettre en relation directe les objets intéressés par les changements d états d un autre objet. On dit alors que les objets observateurs s abonnent à certains événements de l objet tiers (observable) qui prend alors à sa charge le rôle de les notifier lorsqu une certaine propriété est modifiée ou lorsqu un certain événement se produit. Objective-C propose une généralisation de cette approche, appelée le modèle de conception publication/abonnement : ce ne sont pas les ici les observables

Principe du modèle de conception publication/abonnement 139 (objets observés) qui prennent à leur charge d informer les observateurs, mais un intermédiaire appelé centre de notifications qui, dans le cas de Cocoa est une instance de la classe NSNotifi cation Center. Un centre de notifications est donc tout simplement un objet qui prend à sa charge la transmission des notifications depuis l objet émetteur vers l objet observateur. Une analogie serait par exemple Tweeter : vous (objet observé) envoyez un tweet (notification) à Tweeter.com qui occupe le rôle du centre de notifications qui va l acheminer vers le destinataire (observateur) en leur envoyant, par exemple, un SMS. Cette implémentation est plus générique et découple totalement les différents objets : un objet éditeur envoie ses événements au centre de notifications et n a donc besoin de rien savoir a propos de ses abonnés, et les abonnés ne communiquent qu avec le centre de notifications. Les principaux avantages résultant de ce découplage sont qu un objet envoyant une notification n est pas en charge de savoir si des observateurs sont abonnés, et de plus le centre de notifications faisant office d intermédiaire, l objet n a pas non plus besoin de savoir si les objets sont locaux ou pas. Il est ainsi possible d abstraire les communications distantes et de créer des systèmes distribués très facilement.

140 CHAPITRE 4 Gestion des notifications et des événements Obtenir le centre de notifications par défaut [NSNotifi cationcenter defaultcenter] Chaque processus dispose d un centre de notifications par défaut, et vous n avez pas à créer d instance de cette classe. Vous obtenez l instance par défaut en envoyant le message defaultcenter à l objet-classe NSNotifi cationcenter. Comme nous l avons vu dans la section précédente, il est possible de créer de manière transparente un centre de notifications distribué. NSNotifi cationcenter n envoie les notifications que dans le processus en cours d exécution. Mais il existe également NSDistributedNotifi cationcenter qui permet d envoyer les notifications vers différents processus (uniquement en local dans l implémentation actuelle). Les notifications distribuées sont beaucoup plus lourdes, il ne faut donc pas de les utiliser par défaut. Les notifications distribuées sont très importantes pour le développement d applications distribuées. Toutefois, NSDistributedNotifi cationcenter et les sujets relatifs sortent du cadre de cet ouvrage et nous vous recommandons de vous reporter à la documentation d Apple pour les découvrir.

Poster une notification synchrone 141 Poster une notification synchrone postnotifi cation:[nsnotifi cation notifi cationwithname:@ manotifi cation object:instance]]; //équivalent à : NSNotifi cation * notif = [NSNotifi cation notifi cationwithname:@ manotifi cation object:instance] postnotifi cation:notif]; //équivalent à : postnotifi cation:@ manotifi cation object:instance]]; Comme vous pouvez le voir, il est assez simple d envoyer une notification synchrone : il suffit de créer une nouvelle instance de NSNotifi cation et de l envoyer au centre de notifications par défaut. Il est également possible d envoyer directement le message postnotifi cation au centre par défaut avec les arguments nécessaires à la création de l instance de NSNotifi cation, et le centre de notifications gérera le reste.

142 CHAPITRE 4 Gestion des notifications et des événements Il existe trois versions de la méthode postnotifi cation, deux d entre-elles étant des versions simplifiées de la principale : postnotifi cation: //version principale //NSNotifi cation comme argument postnotifi cationname:object: //userinfo est null postnotifi cationname:object:userinfo: Voici un autre exemple montrant l utilisation de postnotifi cationname:object:userinfo: et donc également comment il est possible de passer des informations supplémentaires sous la forme du dictionnaire userinfo : NSDictionary* dic = [NSDictionary dictionarywithobjectsandkeys: @ clef1, [NSNumber numberwithint:1], @ clef2, [NSNumber numberwithint:2], @ clef3, [NSNumber numberwithint:3], nil]; addobserver:instance selector:@selector(affi chernotifi cation:) name:@ manotifi cation object:instance]; postnotifi cationname:@ manotifi cation object:instance userinfo:dic]; Les notifications envoyées ainsi au centre de notifications sont synchrones : la méthode post- Notifi cation: ne rend la main qu une fois toutes

Poster une notification asynchrone 143 les notifications envoyées et que les observateurs ont traité la notification. C est donc une manière de procéder peu performante. Poster une notification asynchrone NSNotifi cation * notifi cation = [NSNotifi cation notifi cationwithname:@ manotifi cation object:instance userinfo:dic]; [[NSNotifi cationqueue defaultqueue] enqueuenotifi cation:notifi cation postingstyle:nspostasap]; Comme nous l avons vu à la section précédente, les envois de notifications au centre par défaut via les différentes méthodes postnotifi cation: sont synchrones. Il est possible d envoyer les notifications de manière asynchrone, via l utilisation des files d attente de notifications, instances de la classe NSNotifi cationqueue. Nous verrons dans la section suivante que ces files fournissent une seconde fonctionnalité très importante. La méthode de classe defaultqueue retourne la file d attente par défaut du centre de notifications par défaut.

144 CHAPITRE 4 Gestion des notifications et des événements Info Dans l exemple précédent, nous avons créé une instance de NSNotifi cation que nous passons à la file d attente par défaut via la fonction enqueuenotifi cation:postingstyle:. Nous avons dissocié l appel en deux étapes afin d améliorer la lisibilité du code dans l ouvrage. En général, les développeurs Objective-C préfèrent les appels imbriqués. Il existe trois différentes manières d envoyer la noti fication, qui sont définies dans le fichier NSNotifi cation.h sous la forme d une énumération : //NSNotifi cationqueue.h enum { NSPostWhenIdle = 1, NSPostASAP = 2, NSPostNow = 3 }; Comme son nom l indique NSPostNow signifie que la notification doit être envoyée immédiatement. La notification ne sera donc pas asynchrone, mais bénéficiera toutefois de la fonction de regroupement (coalescing) des notifications de la file d attente. Vous la découvrirez à la section suivante. Lorsque vous avez besoin d accéder à une ressource rare ou chère, et que vous souhaitez toutefois que votre notification soit envoyée dès que

Poster une notification asynchrone 145 possible, vous utiliserez le style NSPostASAP (As Soon As Possible, dès que possible). Cette méthode est asynchrone et retourne immédiatement. Enfin, NSPostWhenIdle propose d envoyer la notification lorsque la file d attente est en attente de nouvelles notifications. Cela signifie que NSPostWhenIdle est une manière d envoyer les notifications avec une priorité minimale. Cette méthode est asynchrone et retourne immédiatement. Info Chaque thread dispose d une file d attente par défaut, mais il est possible de créer vos propres files d attente et les associer au centre de notifications et à vos thread. Ceci est une utilisation avancée qui ne sera pas traitée dans ici, et nous vous renvoyons donc à la documentation d Apple. Il est possible de retirer une notification d une file d attente grâce à la méthode dequeuenotifi cations- Matching:coalesceMask: de NSNotifi cationqueue. Son fonctionnement est similaire à celui de la méthode removeobserver:name:object: de NSNotifi cationcenter, mais contrairement à celle-ci, son utilisation reste très rare.