It appears to be somewhat awkward in ICS and JB to get this functionality, several methods in order to achieve it are discussed here. I'll summarise/copy some of the better sounding ones (I added the links):
Try Audio Control, it's by far the best volume management app in the
Google Play store. There is both a notification and ringer volume for
ICS or Jelly Bean.
If you're willing to pay then this app has "Separate Notification and Ringer volumes for ICS/JB devices".
Google & download a silent MP3, use Profile Manager or
Tasker to change notification sound to silence mp3 when required.
Or alternatively (as the OP points out in the comments) use a low volume ringtone so you can still hear it. Someone points out that for this method if you have custom notifications for different apps then they won't be silenced/lower volume, only apps that use the default system notification will be affected unless you update all of the notification sounds.
Another option is to use a profile switcher like Tasker or Setting
Profiles (what I use) and make two profiles:
- Silent - profile set it to silence your ringer
- Ring - profile to set your desired ringer volume
Now make a rule to trigger your "Ring" profile based on incoming call
condition. The condition could be a call from a specific person, or
persons from particular groups in your address book. Use the *
wildcard if you want the condition to include calls from anyone. You
can piggy back conditions so that, for example, you can add a time
condition so the rule might only be activated at a certain time of
day.
So what you have now is 2 profiles, one that mutes ALL sounds (thanks
to ICS) and another that sets the ringer volume to a specific level.
Set the "Ring" profile to have a higher priority, that way when they
are both active at the same time, the "Ring" takes precedence.
Combined with your condition, the result should be, ALL of your sounds
are muted, but when a call comes in, it triggers the incoming call
condition, triggers the "Ring" profile, and both the mute and the ring
profiles are active at the same time, and the ring profile will win.
There might be a short delay, but it shouldn't be noticeable.
This would of course have the effect that certain calls will ALWAYS
ring and maybe sometimes you truly do want to silence your phone. To
that, you will just make another profile, call it "True Silent" for
example, and have it silence everything and give it the highest
priority (or at least higher then the "Ring" profile) and then when
you activate that profile, it will win over the others.
Both of these apps are again paid for applications however they have a grater functionality than Audio Control. Tasker is a particularly great one.
Ringleader allows you to
set up profiles that you can change any or all of your individual
ringtones to silent in one click. It takes a while to configure. Once
you install it you have to set all of your ringtones and alerts again
using the Ringleader option for choosing alerts. If you set it as the
default ringtone chooser option it simplifies the process. Once you
have reset each one they will shop up in the Ringleader options list.
In Ringleader you then save a base profile. After you have a base
profile saved you can edit all of the alert sounds individually
through Ringleader and save new profiles. I have three profiles. One
is for normal use, one for phone calls only and one for silent. There
is a simple widget available for switching them quickly.
This is a free application however there's also a paid for version. Someone else in the thread mentions this working for them however the actual notification volume can't be set separately, the notifications can only be silenced while still allowing the phone to ring.
When Googling around I did see people mention Audio Manager as a solution to this, however I've tested it out and although you can set the ring volume independently of the system volume as soon as someone rings you the volumes change to the same level, even if you use the app to lock the volumes.