OVH Cloud OVH Cloud

Notification lors d'un changement de config

23 réponses
Avatar
Patrice Goetghebeur
salut,

Je cherche comment recevoir une notification cocoa lors d'un changement dans
la config réseau.

J'ai lu tout ce que j'ai pu trouver sur le Configuration Framework notamment
l'exemple MoreSCF, mais j'ai rien trouver a propos des notifications.

Quelqu'un a t-il un exemple?
Merci.

10 réponses

1 2 3
Avatar
jeromelebel
Ca me parait totalement juste si le chapitre est au sujet de
NSNotificationCenter.

Il y a juste une petite critique a faire : il faudrait ajouter une
petite note pour dire que si on a besoin d'envoyer une notification
entre 2 applications, il faut voir NSDistributedNotificationCenter.
Avatar
Jean-Michel MARINO

Ca me parait totalement juste si le chapitre est au sujet de
NSNotificationCenter.

Il y a juste une petite critique a faire : il faudrait ajouter une
petite note pour dire que si on a besoin d'envoyer une notification
entre 2 applications, il faut voir NSDistributedNotificationCenter.


C'est bien jolie tout ça, mais si on ne connaît pas le string utilisé
par l'application avec laquelle on souhaite converser, ça sert pas à
grand chose leur belle classe NSDistributedNotificationCenter.

Apple ne communique pas sur les paramètres à utiliser pour récupérer une
notification provenant de leurs applications (c'est tout simplement pas
souhaitable).

Voir :
comp.sys.mac.programmer.help

J'ai posté et j'ai eu une réponse on ne peut plus explicite à ce sujet.
Sans commentaire...

--

JMM ;-)

---- replace 'spam_killer' by 'free' to reply, thanks ----
---- remplacer 'spam_killer' par 'free' merci ----

Avatar
jeromelebel
Jean-Michel MARINO wrote:

C'est bien jolie tout ça, mais si on ne connaît pas le string utilisé
par l'application avec laquelle on souhaite converser, ça sert pas à
grand chose leur belle classe NSDistributedNotificationCenter.


Désolé, je ne suis pas resté bloqué sur ton probleme...

Si tu veux tester avec NSDistributedNotificationCenter, tu peux toujours
souscrire a toutes les notifications et les afficher au fur et a mesure
qu'elles arrivent. Peut-être que tu trouveras un rapport avec le reseau,
mais j'en doute.

Avatar
Jean-Michel MARINO
In article (Dans l'article) <3ff490cb$0$22334$,
Jean-Michel MARINO wrote (écrivait) :


Voir :
comp.sys.mac.programmer.help

J'ai posté et j'ai eu une réponse on ne peut plus explicite à ce sujet.
Sans commentaire...



Ce qu'on t'a répondu c'est que ce n'est pas NSDistributedNotificationCenter
qu'il te faut. En plus, tu pars sur les préférences réseau alors que la
configuration réseau peut changer sans passer par l'application Préférences
Systèmes (par exemple avec le sous-menu "Configuration Réseau" du Menu
Pomme).

Tu dois travailler avec le SystemConfiguration Framework. La documentation
est complètement pourrie, mais il vaut mieux commencer par la lire:
http://developer.apple.com/documentation/Networking/Conceptual/SysConfigOver
view926/index.html

Ensuite, pour faire ce que tu veux, il faut ouvrir une connexion avec le
DynamicStore à l'aide de SCDynamicStoreCreate. Puis, tu inscris cette
connexion sur ta CFRunLoop et la fonction idoine sera appelée quand la
configuration réseau changera.

Tu peux regarder comment fait MenuMeters, mais ça merdouille de temps en
temps (dans la version actuelle (1.1.1), j'entends).

http://www.ragingmenace.com/software/menumeters/index.html

Paul

C'est bien comme ça que je vois les choses maintenant.


NSDistributedNotificationCenter ne peut pas être utilisé comme système
de notification entre applications si celle-ci ne coopèrent pas...

Merci pour tes infos.

--

JMM ;-)

---- replace 'spam_killer' by 'free' to reply, thanks ----
---- remplacer 'spam_killer' par 'free' merci ----


Avatar
Patrice Goetghebeur
Je cherche comment recevoir une notification cocoa lors d'un changement dans
la config réseau.



bon voila finalement le code que j'ai tapé a partir du TN1145 et qui ne
fonnctionne pas.
La fonction "notify" devrait etre appelée lors d'un changement dans la
config PPP. mais elle ne l'est jamais.
selon vous, kesse qui ne va pas ??...


void setNotification()
{
OSStatus err;
SCDynamicStoreContext context = {0, NULL, NULL, NULL, NULL};
SCDynamicStoreRef ref = NULL;
CFStringRef pattern = NULL;
CFArrayRef patternList = NULL;
CFRunLoopSourceRef rls = NULL;


/* connexion au dynamic store */
ref = SCDynamicStoreCreate( NULL, CFSTR("notifier"), &notify,
&context);
err = MoreSCError(ref);

/* creation d'une entite de recherche */
if (err == noErr) {
pattern = SCDynamicStoreKeyCreateNetworkServiceEntity(NULL,
kSCDynamicStoreDomainState,
kSCCompAnyRegex, kSCEntNetPPP);
err = MoreSCError(pattern);
}

/* creation d'une table avec la seule entite */
if (err == noErr) {
patternList = CFArrayCreate(NULL, (const void **) &pattern, 1,
&kCFTypeArrayCallBacks);
err = CFQError(patternList);
}

/* creation d'une notification */
if (err == noErr) {
err =
MoreSCErrorBoolean(SCDynamicStoreSetNotificationKeys(ref,NULL,patternList));
}

/* reference la boucle */
if (err == noErr) {
rls = SCDynamicStoreCreateRunLoopSource(NULL, ref, 0);
err = MoreSCError(rls);
}

/* ajout de la source a la boucle */
CFRunLoopAddSource(CFRunLoopGetCurrent(), rls, kCFRunLoopCommonModes);

/* release */
CFQRelease(pattern);
CFQRelease(patternList);

if (err != noErr) {
CFQRelease(ref);
ref = NULL;
}
}

static void notify( SCDynamicStoreRef dynStore,
CFArrayRef changedKeys,
void *info)
{
// traitement du signal ici
}


static OSStatus MoreSCErrorBoolean(Boolean success)
{
OSStatus err;
int scErr;

err = noErr;
if ( ! success ) {
scErr = SCError();
if (scErr == kSCStatusOK) {
scErr = kSCStatusFailed;
}
err = scErr;
}
return err;
}

static OSStatus MoreSCError(const void *value)
{
return MoreSCErrorBoolean(value != NULL);
}

static OSStatus CFQError(CFTypeRef cf)
{
OSStatus err;
err = noErr;
if (cf == NULL) {
err = coreFoundationUnknownErr;
}
return err;
}

static void CFQRelease(CFTypeRef cf)
{
if (cf != NULL) {
CFRelease(cf);
}
}

Avatar
Éric Lévénez
Le 23/01/04 3:50, dans <40108bfa$0$17134$, « Patrice
Goetghebeur » a écrit :

Je cherche comment recevoir une notification cocoa lors d'un changement dans
la config réseau.


bon voila finalement le code que j'ai tapé a partir du TN1145 et qui ne
fonnctionne pas.


Je n'ai pas regardé ton code, mais Apple a depuis posté le document
"Developing Network Config Apps for Mac OS X" sur le site développeur
<https://connect.apple.com>. Je ne sais pas si tous les développeurs y ont
accès. Il doit y avoir plein de trucs qui t'intéressent là dedans.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
Patrice Goetghebeur
Éric Lévénez wrote:

Le 23/01/04 3:50, dans <40108bfa$0$17134$, « Patrice


Je cherche comment recevoir une notification cocoa lors d'un changement dans
la config réseau.


bon voila finalement le code que j'ai tapé a partir du TN1145 et qui ne
fonnctionne pas.



Je n'ai pas regardé ton code, mais Apple a depuis posté le document
"Developing Network Config Apps for Mac OS X" sur le site développeur
<https://connect.apple.com>. Je ne sais pas si tous les développeurs y ont
accès. Il doit y avoir plein de trucs qui t'intéressent là dedans.

je n'ai rien vu. c'est dans quelle section ? je n'y est peut etre pas

accés, j'ai juste un compte gratuit.



Avatar
langmc
Patrice Goetghebeur wrote:

Éric Lévénez wrote:

Le 23/01/04 3:50, dans <40108bfa$0$17134$, « Patrice


Je cherche comment recevoir une notification cocoa lors d'un changement
dans
la config réseau.


bon voila finalement le code que j'ai tapé a partir du TN1145 et qui ne
fonnctionne pas.



Je n'ai pas regardé ton code, mais Apple a depuis posté le document
"Developing Network Config Apps for Mac OS X" sur le site développeur
<https://connect.apple.com>. Je ne sais pas si tous les développeurs y ont
accès. Il doit y avoir plein de trucs qui t'intéressent là dedans.

je n'ai rien vu. c'est dans quelle section ? je n'y est peut etre pas

accés, j'ai juste un compte gratuit.


Une fois que tu est logué, tu clique sur 'download software' et c'est le
premier truc proposé....


--
Le sage montre la lune, l'imbécile regarde le doigt.




Avatar
Patrice Goetghebeur
michel langlois wrote:

Patrice Goetghebeur wrote:


Éric Lévénez wrote:


Le 23/01/04 3:50, dans <40108bfa$0$17134$, « Patrice



Je cherche comment recevoir une notification cocoa lors d'un changement
dans
la config réseau.


bon voila finalement le code que j'ai tapé a partir du TN1145 et qui ne
fonnctionne pas.



Je n'ai pas regardé ton code, mais Apple a depuis posté le document
"Developing Network Config Apps for Mac OS X" sur le site développeur
<https://connect.apple.com>. Je ne sais pas si tous les développeurs y ont
accès. Il doit y avoir plein de trucs qui t'intéressent là dedans.



je n'ai rien vu. c'est dans quelle section ? je n'y est peut etre pas
accés, j'ai juste un compte gratuit.



Une fois que tu est logué, tu clique sur 'download software' et c'est le
premier truc proposé....


j'ai rien avec ce nom là, le premier truc c'est CoreAudio SDK ...






Avatar
langmc
Patrice Goetghebeur wrote:

Une fois que tu est logué, tu clique sur 'download software' et c'est le
premier truc proposé....


j'ai rien avec ce nom là, le premier truc c'est CoreAudio SDK ...



Je sais pas comment cela ce présente pour les ADC online (je suis ADC
Mailling), j'ai ça dans la colonne de gauche :


Download Software
Developer Tech. Briefing --- c'est celui-la et dans la colonne de
Audio --- droite, il y a le fichier à prendre.
Developer Tools
FireWire
Java
Mac OS X
QuickTime Java
WebObjects
WWDC 2003

--
Le sage montre la lune, l'imbécile regarde le doigt.


1 2 3