Skip to main content

I've been following @erikgmez 's Nudge app for macOS 11 for a while now, and I'm finally trying to jump in to it.



There seems to be a lot of configuration options but they all seem pretty similar to me when reading the wiki



I tried running it just with defaults and it made the nudge window active constantly... what settings are recommended to kind of tone down the aggressiveness of behavior? Our patches prior to macOS 11 would run once a day and prompt to install or defer. In hindsight that seems not aggressive enough, so maybe every couple hours? I'm open to suggestions, but with all the different timer options I'm getting a little lost and confused.

@debrat I am having the issue of the update button not doing anything. I modified and shortened the mainContextText, but it still doesn't work. Running version 1.1.x -- curious if there is something else I should be trying?

Of note: if i run Nudge in demo-mode, the button works fine.


The developer posted this update in GitHub: 

"That has been fixed as of a40c521 and will be in the next release of Nudge v1.1.0.

Moving forward, if you need additional text for mainContentText that takes over 125 pixels in height, a scroll bar will appear and the user can scroll up/down to read the additional context. The button no longer fails to trigger as well."


I use a launchagent that tells nudge to run every 3 hours (or 10800 seconds)



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.github.macadmins.Nudge</string>
<key>LimitLoadToSessionType</key>
<array>
<string>Aqua</string>
</array>
<key>ProgramArguments</key>
<array>
<string>/Applications/Utilities/Nudge.app/Contents/MacOS/Nudge</string>
<!-- <string>-json-url</string> -->
<!-- <string>https://raw.githubusercontent.com/macadmins/nudge/main/Nudge/example.json</string> -->
<!-- <string>-demo-mode</string> -->
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>10800</integer>
</dict>
</plist>


did you deploy the nudge launch agent with this script together? 


I am still having issues getting Nudge to work correctly.  I was able to change the wording to my liking.  Even able to change the Apple logo on the left side pane.  I uploaded the Config Profile using the Custom Schema.  Everything seems to look good in the config profile.  I can make changes and I see the updated info in System Preferences>Profiles.  If I open Nudge from Applications it opens fine and looks great.  

  The problem is the setting I have in the Config Profile, initialrefreshcycle, approachingrefreshcycle, immenentrefreshcycle, elasperefreshcycle does not initiate Nudge to open.  Even if I change to 60 sec just to get it to open.  If I use the launch agent it will reopen if I reboot the device.

Can someone confirm that by setting these parameters that Nudge should open?  I'm using the Config Profile method because I am having even more issues trying JSON.  Has anyone had the config profile method working?

 


I am still having issues getting Nudge to work correctly.  I was able to change the wording to my liking.  Even able to change the Apple logo on the left side pane.  I uploaded the Config Profile using the Custom Schema.  Everything seems to look good in the config profile.  I can make changes and I see the updated info in System Preferences>Profiles.  If I open Nudge from Applications it opens fine and looks great.  

  The problem is the setting I have in the Config Profile, initialrefreshcycle, approachingrefreshcycle, immenentrefreshcycle, elasperefreshcycle does not initiate Nudge to open.  Even if I change to 60 sec just to get it to open.  If I use the launch agent it will reopen if I reboot the device.

Can someone confirm that by setting these parameters that Nudge should open?  I'm using the Config Profile method because I am having even more issues trying JSON.  Has anyone had the config profile method working?

 


I am also experiencing issues getting Nudge to work. I can't even get the JSON Configuration Profile to deploy to my test machine. I am getting the error:

 

 

-[__NSCFConstantString objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fff80a00ad0

 

 

I took the default example JSON provided in the repo and made minimal changes and I am still getting the error above. I also tried to deploy the mobileconfig file via Jamf Pro and it also did not work. I lastly tried to download the mobileconfig file to the mac and install manually, and it doesn't work either, and actually causes my Profiles window to become "corrupt", and I am unable to open it until I reboot the machine.

 

My plist file is below. Any guidance would be appreciated.

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>optionalFeatures</key>
<dict>
<key>acceptableApplicationBundleIDs</key>
<array>
<string>us.zoom.xos</string>
</array>
<key>aggressiveUserExperience</key>
<false/>
<key>asyncronousSoftwareUpdate</key>
<false/>
<key>attemptToFetchMajorUpgrade</key>
<false/>
<key>enforceMinorUpdates</key>
<false/>
</dict>
<key>osVersionRequirements</key>
<array>
<dict>
<key>aboutUpdateURL</key>
<string>https://support.apple.com/en-us/HT211896#macos1121</string>
<key>aboutUpdateURLs</key>
<array>
<dict>
<key>_language</key>
<string>en</string>
<key>aboutUpdateURL</key>
<string>https://support.apple.com/en-us/HT211896#macos1121</string>
</dict>
</array>
<key>majorUpgradeAppPath</key>
<string>/Applications/Install macOS Big Sur.app</string>
<key>requiredInstallationDate</key>
<string>2021-09-13T00:00:00Z</string>
<key>requiredMinimumOSVersion</key>
<string>11.6</string>
<key>targetedOSVersionsRule</key>
<string>11</string>
</dict>
</array>
<key>userExperience</key>
<dict>
<key>allowUserQuitDeferrals</key>
<true/>
<key>allowedDeferrals</key>
<integer>1000000</integer>
<key>allowedDeferralsUntilForcedSecondaryQuitButton</key>
<integer>14</integer>
<key>approachingRefreshCycle</key>
<integer>6000</integer>
<key>approachingWindowTime</key>
<integer>72</integer>
<key>elapsedRefreshCycle</key>
<integer>300</integer>
<key>imminentWindowTime</key>
<integer>24</integer>
<key>imminentRefreshCycle</key>
<integer>600</integer>
<key>initialRefreshCycle</key>
<integer>18000</integer>
<key>maxRandomDelayInSeconds</key>
<integer>1200</integer>
<key>noTimers</key>
<false/>
<key>nudgeRefreshCycle</key>
<integer>60</integer>
<key>randomDelay</key>
<false/>
</dict>
<key>userInterface</key>
<dict>
<key>actionButtonPath</key>
<string>jamfselfservice://remediate</string>
<key>fallbackLanguage</key>
<string>en</string>
<key>forceFallbackLanguage</key>
<false/>
<key>forceScreenShotIcon</key>
<false/>
<key>iconDarkPath</key>
<string>/usr/local/shared/logo.png</string>
<key>iconLightPath</key>
<string>/usr/local/shared/logo.png</string>
<key>screenShotDarkPath</key>
<string/>
<key>screenShotLightPath</key>
<string/>
<key>showDeferralCount</key>
<false/>
<key>simpleMode</key>
<false/>
<key>singleQuitButton</key>
<false/>
</dict>
</dict>
</plist>

 

 


Nudge 1.1 version issue

  Anyone else having an issue with version 1.1?  I'm testing with current stage at ApproachingRefresh Cycle (<72hrs).  Running nudge it opens and shows the tam "I Understand".   If you leave Nudge active, the main display on screen, the "I Understand" tab disappears with no other option.  Like the time has elapsed.  Days remaining to update still show 3.

Am I missing a setting in the Configuration Profile?  If I roll back to v 1.0 this does not happen.

Also just to confirm the Launch agent and logger have not changed?  I still see LaunchAgent at 1.0.0 and Logger at 1.0.1.  I have not change the pkg in Jamf as I did the Nudge app.

 

  


I am still having issues getting Nudge to work correctly.  I was able to change the wording to my liking.  Even able to change the Apple logo on the left side pane.  I uploaded the Config Profile using the Custom Schema.  Everything seems to look good in the config profile.  I can make changes and I see the updated info in System Preferences>Profiles.  If I open Nudge from Applications it opens fine and looks great.  

  The problem is the setting I have in the Config Profile, initialrefreshcycle, approachingrefreshcycle, immenentrefreshcycle, elasperefreshcycle does not initiate Nudge to open.  Even if I change to 60 sec just to get it to open.  If I use the launch agent it will reopen if I reboot the device.

Can someone confirm that by setting these parameters that Nudge should open?  I'm using the Config Profile method because I am having even more issues trying JSON.  Has anyone had the config profile method working?

 


I am having the same problem. The only way I can get Nudge to run now is by installing the default autolaunch.pkg and it will open up every 30 minutes but the deferral count is now no longer being counted.

If I run Nudge alongside a very basic config file installed locally on the PC it works 100% as intended. I just can't get it to launch without using the auto launch agent. More so, if I add my own auto launch agent, it doesn't launch. I'm really confused by this. I really hope Apple gives us a way to manage updates in Monterey. I swear I'll upgrade every Mac to Monterey day 1 if it has a way to manage updates.


@WaqasKhan I'm using json, just so ease of use when modifying for new os releases. There is another parameter you may need to change and that is targetedOSVersion. If your test machine is running 11.3.1 than that targetedOSVersion would need to be scoped to that version.



@rickwhois How do you go about installing the JSON with your desired settings to the client device?  I see it is supposed to be stored at  /Library/Preferences/com.github.macadmins.Nudge.json.  I don't see in the setup how it gets pushed to the device.


I am using Nudge 1.1 and facing an issue .

Nudge is launching every 1 minute .  


Hi @vinu_thankachan 

Not sure about that 480 for Minute.  Surely Minute is restricted to a range between 0 and 59 or maybe 60?

Try removing

 

<dict>
<key>Minute</key>
<integer>480</integer>
</<dict>

 

and see if that stops it running every minute.


I'm thinking maybe something like this might work:

 

<key>StartCalendarInterval</key>
<array>
<dict>
<key>Hour</key>
<integer>0</integer>
<key>Minute</key>
<integer>0</integer>
</<dict>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>0</integer>
</<dict>
<dict>
<key>Hour</key>
<integer>16</integer>
<key>Minute</key>
<integer>0</integer>
</<dict>
</array>

 

 


Nudge 1.1 version issue

  Anyone else having an issue with version 1.1?  I'm testing with current stage at ApproachingRefresh Cycle (<72hrs).  Running nudge it opens and shows the tam "I Understand".   If you leave Nudge active, the main display on screen, the "I Understand" tab disappears with no other option.  Like the time has elapsed.  Days remaining to update still show 3.

Am I missing a setting in the Configuration Profile?  If I roll back to v 1.0 this does not happen.

Also just to confirm the Launch agent and logger have not changed?  I still see LaunchAgent at 1.0.0 and Logger at 1.0.1.  I have not change the pkg in Jamf as I did the Nudge app.

 

  


Hey! I am seeing the same issue. Did you ever find a solution for this? 


Anyone know the terminal command to remove an active Nudge session?  I came across the command in the past but cannot seem to find it.  I have an old test device with an old Nudge session applied.


I am still having issues getting Nudge to work correctly.  I was able to change the wording to my liking.  Even able to change the Apple logo on the left side pane.  I uploaded the Config Profile using the Custom Schema.  Everything seems to look good in the config profile.  I can make changes and I see the updated info in System Preferences>Profiles.  If I open Nudge from Applications it opens fine and looks great.  

  The problem is the setting I have in the Config Profile, initialrefreshcycle, approachingrefreshcycle, immenentrefreshcycle, elasperefreshcycle does not initiate Nudge to open.  Even if I change to 60 sec just to get it to open.  If I use the launch agent it will reopen if I reboot the device.

Can someone confirm that by setting these parameters that Nudge should open?  I'm using the Config Profile method because I am having even more issues trying JSON.  Has anyone had the config profile method working?

 


How did you change the apple logo on the left side pane ? trying to do it, couldn't find enough resources. Thanks in advance.


Anyone know the terminal command to remove an active Nudge session?  I came across the command in the past but cannot seem to find it.  I have an old test device with an old Nudge session applied.


loggedInUser=$( /bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name 😕 { print $3 }' )

loggedInUserID=$( /usr/bin/id -u "${loggedInUser}" )

/bin/launchctl asuser "${loggedInUserID}" /bin/launchctl unload -w "/Library/LaunchAgents/com.github.macadmins.Nudge.plist"


How do you change the apple logo on the left side pane ? trying to do it, couldn't find enough resources. Thanks in advance.


How do you change the apple logo on the left side pane ? trying to do it, couldn't find enough resources. Thanks in advance.


Check this 

https://github.com/macadmins/nudge/wiki/userInterface


@vinu_thankachan The article below gives a great explanation of what you are seeing. StartCalendarInterval is looking for actual times so minute cannot be more than 59. If you put hour then it corresponds to an actual time so <hour>1</hour> would be 1am. If you don't have hour and only have <minute>30</minute> it will launch 30 minutes every hour. Hope this helps. I've found this out through my own trial and error.

https://alvinalexander.com/mac-os-x/launchd-plist-examples-startinterval-startcalendarinterval/


@vinu_thankachan The article below gives a great explanation of what you are seeing. StartCalendarInterval is looking for actual times so minute cannot be more than 59. If you put hour then it corresponds to an actual time so <hour>1</hour> would be 1am. If you don't have hour and only have <minute>30</minute> it will launch 30 minutes every hour. Hope this helps. I've found this out through my own trial and error.

https://alvinalexander.com/mac-os-x/launchd-plist-examples-startinterval-startcalendarinterval/


Sounds like you will want to utilize startinterval with seconds as opposed to startcalendarinterval


Anyone have tried Deploying nudge with M1 machines ? Nudge doesn't download the minor OS update with M1 macs , with still "asynchronous software update" key set to false. 

 


I am having the same problem. The only way I can get Nudge to run now is by installing the default autolaunch.pkg and it will open up every 30 minutes but the deferral count is now no longer being counted.

If I run Nudge alongside a very basic config file installed locally on the PC it works 100% as intended. I just can't get it to launch without using the auto launch agent. More so, if I add my own auto launch agent, it doesn't launch. I'm really confused by this. I really hope Apple gives us a way to manage updates in Monterey. I swear I'll upgrade every Mac to Monterey day 1 if it has a way to manage updates.


Hi Levi, I know this is an older thread but I’m having this same issue. The deferral count does not increase and the user’s deferral interval is being ignored and automatically launching at 30 mins. I know it’s probably the default LaunchAgent, but wondering what the fix is, thank you. 


I am having the same problem. The only way I can get Nudge to run now is by installing the default autolaunch.pkg and it will open up every 30 minutes but the deferral count is now no longer being counted.

If I run Nudge alongside a very basic config file installed locally on the PC it works 100% as intended. I just can't get it to launch without using the auto launch agent. More so, if I add my own auto launch agent, it doesn't launch. I'm really confused by this. I really hope Apple gives us a way to manage updates in Monterey. I swear I'll upgrade every Mac to Monterey day 1 if it has a way to manage updates.


Hi Levi, we’re having the exact same issue of the deferral count remaining at 0 and it launching at 30 mins regardless of user input. Did you ever figure it out?! I assume it’s something to do with the launch agent. 


Reply