Enfin, après avoir passé toute la journée à lire des centaines d'articles, j'ai finalement obtenu ma réponse. Remplacez simplement par l'ID de bundle pour lequel vous souhaitez effectuer la vérification.
#!/bin/bash
# vérifier si les notifications sont activées pour l'utilisateur connecté ou non
# si ce n'est pas activé, l'activer pour votre application
# Obtenir l'utilisateur connecté actuellement
user=$(echo "show State:/Users/ConsoleUser" | scutil | awk '/Name :/ { print $3 }')
#Emplacement du fichier plist des préférences du centre de notifications pour l'utilisateur actuel
notification_plist="/Users/$user/Library/Preferences/com.apple.ncprefs.plist"
#Nombre de bundles existant dans le plist
count=$(/usr/libexec/PlistBuddy -c "Print :apps" "${notification_plist}" | grep -c "bundle-id")
#Drapeau indiquant si le centre de notifications doit être redémarré
restart=0
for ((index=1; index<"${count}"; index++)); do
bundle_id=$(/usr/libexec/PlistBuddy -c "Print apps:${index}:bundle-id" "${notification_plist}");
if [[ "${bundle_id}" == ]]; then
flags_value=$(/usr/libexec/PlistBuddy -c "Print apps:${index}:flags" "${notification_plist}");
if [[ $flags_value == 276* ]]; then
/usr/libexec/PlistBuddy -c "Set :apps:${index}:flags 41951246" "${notification_plist}"
restart=1
fi
fi
done
if [[ ${restart} = 1 ]]; then
# Redémarrer le centre de notifications pour que les modifications prennent effet.
killall sighup usernoted
sleep 1
# attendre que le centre de notifications redémarre
while ! pgrep -x "usernoted" >/dev/null; do sleep 1; done
fi
Le code ci-dessus a fonctionné pour moi. D'autres peuvent avoir besoin d'ajuster flags_value selon leurs besoins.