1 votes

Comment changer les paramètres de notification de l'application de manière programmée ?

Il existe des applications comme WhatsApp ou Telegram qui n'ont pas de moyen rapide de désactiver les notifications.

J'aimerais savoir s'il est possible de modifier les paramètres de notification de manière programmatique. Dans mon cas, il suffirait de changer le basculement "Autoriser les notifications". Je veux créer un raccourci ou un script pour activer/désactiver les notifications pour certaines applications.

Au cas où, voici une capture d'écran des paramètres dont je parle.

entrer la description de l'image ici

3voto

user3439894 Points 52496

L'exemple de code AppleScript, ci-dessous, a été testé dans Script Editor sous macOS Big Sur avec les paramètres de Langue et région dans Préférences Système réglés sur Anglais (États-Unis) - Principal et a fonctionné pour moi sans problème1.

  • 1 Suppose que les réglages nécessaires et appropriés dans <strong>Préférences Système</strong> > <strong>Sécurité et confidentialité</strong> > <strong>Confidentialité</strong> ont été définis/réglés comme nécessaire.

Tout ce que vous devriez avoir besoin de faire est de définir la valeur de targetApp, au début du script, sur le nom de l'application cible tel qu'il apparaît dans le panneau Notifications dans les Préférences Système.

Tel que codé actuellement, le script bascule le bouton Autoriser les notifications de targetApp.

Le script peut être utilisé de différentes manières pour le déclencher, en tant qu'application AppleScript, en tant que Service/Action rapide Automator, en tant que script shell en ajoutant un shebang #!/usr/bin/osascript au début, en le sauvegardant en tant que fichier texte et en le rendant exécutable avec chmod, ou avec tout utilitaire tiers capable d'exécuter du code AppleScript, etc.

Exemple de code AppleScript:

--  # Définir la valeur de targetApp sur le nom de l'application
--  # cible tel qu'il apparaît dans les Notifications
--  # panneau des Préférences Système.

set targetApp to "Script Editor"

--  # Ne modifiez pas le code ci-dessous sauf si nécessaire.

property |Préférences Système| : nom de ¬
    l'application id "com.apple.systempreferences"

--  # Vérifier si les Préférences Système sont 
--  # en cours d'exécution et si oui, alors les fermer.
--  # 
--  # Ceci est fait pour que le script ne échoue pas 
--  # s'il est en cours d'exécution et qu'une feuille modale
--  # est affichée, d'où l'utilisation de 'killall' 
--  # car 'quit' échoue quand il le fait, s'il l'est.
--  #
--  # Ceci est également fait pour permettre à 
--  # comportements par défaut d'être prévisibles depuis une occurrence propre.

if l'exécution de l'application id "com.apple.systempreferences" then
    try
        dire à l'application id "com.apple.systempreferences" de quitter
    en cas d'erreur
        faire script shell "killall '" & |Préférences Système| & "'"
    fin essayer
    delay 0.1
end if

--  # S'assurer que les Préférences Système ne sont pas en cours d'exécution avant
--  # de les rouvrir. Sinon, il peut y avoir un problème
--  # en essayant de les rouvrir pendant qu'elles se ferment réellement.

répéter tant que l'exécution de ¬
    l'application id "com.apple.systempreferences" est vrai
    delay 0.1
fin répéter

--  # Ouvrir les Préférences Système dans le panneau Notifications.

dire à l'application id "com.apple.systempreferences"
    lancer -- # Utilisé comme solution de contournement à un problème dans Big Sur.
    delay 0.1
    révéler le panneau id "com.apple.preference.notifications"
end tell

--  # Utiliser Événements Système pour atteindre le but.

dire à l'application id "com.apple.systemevents"
    lancer -- # Utilisé comme solution de contournement à un problème dans Big Sur.
    delay 0.2
    dire fenêtre 1 de processus d'application |Préférences Système|

        --  # Attendre que le panneau cible soit disponible.

        mon waitForUIelement(ligne -1 de tableau 1 de zone de défilement 1)

        --  # Déterminer la ligne cible à sélectionner.

        définir ligneCibleApp à la première ligne de tableau 1 de ¬
            zone de défilement 1 dont la valeur de texte statique 1 de ¬
            groupe 1 de élément IU 1 est targetApp

        --  # Sélectionner la ligne cible.

        sélectionner ligneCibleApp

        --  # Attendre que la case à cocher cible soit disponible.

        mon waitForUIelement(bouton 1 de groupe 1)

        --  # Cliquer sur Autoriser les notifications.

        cliquer bouton 1 de groupe 1

    fin dire
end tell

delay 0.02

quitter application id "com.apple.systempreferences"

--  ## Gestionnaire ##

sur waitForUIelement(uiElement)
    dire à l'application id "com.apple.systemevents"
        dire fenêtre 1 de processus d'application ¬
            |Préférences Système|
        définir i à 0
        répéter jusqu'à ce que existe uiElement
            delay 0.1
            définir i à i + 1
            si i  30 alors retourner
        fin répéter
    fin dire
fin waitForUIelement

Remarques :

Tel que codé actuellement, le script se contente de basculer le bouton Autoriser les notifications de targetApp, cependant, le code peut être facilement modifié pour vérifier l'état du bouton cible et agir en conséquence. Par exemple, si on veut juste s'assurer qu'il est désactivé.

Changer :

cliquer bouton 1 de groupe 1

À :

si la valeur de bouton 1 de groupe 1 est "on" alors ¬
    cliquer bouton 1 de groupe 1

Pour une utilisation dans macOS Catalina:

Changer :

    --  # Déterminer la ligne cible à sélectionner.

définir ligneCibleApp à la première ligne de tableau 1 de ¬
    zone de défilement 1 dont la valeur de texte statique 1 de ¬
    groupe 1 de élément IU 1 est targetApp

À :

    --  # Déterminer la ligne cible à sélectionner.

définir ligneCibleApp à premier élément de (lignes de tableau 1 de ¬
    zone de défilement 1 dont la valeur de texte statique 1 de ¬
    groupe 1 de élément IU 1 est targetApp)

Note : L'<em>exemple</em> de <strong>code AppleScript</strong> est tel quel et sans aucun <em>gestion des erreurs</em> inclus ne contient pas de gestion des erreurs supplémentaire comme cela pourrait être approprié. Il incombe à l'utilisateur d'ajouter toute <em>gestion des erreurs</em> comme cela pourrait être approprié, nécessaire ou souhaité. Consultez les <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TOCP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>essayer</strong></a> et <em>déclaration d'<a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TOCP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>erreur</strong></a></em> dans le <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guide du Langage AppleScript</strong></a>. Voir aussi, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TOCP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Travailler avec les Erreurs</strong></a>. De plus, l'utilisation de la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TOCP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>commande de délai</strong></a> peut être nécessaire entre les événements lorsque approprié, par exemple, <code>délai 0,5</code>, avec la <em>valeur</em> du <em>délai</em> définie correctement.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X