AVSystemController * av = [AVSystemController sharedAVSystemController];
[Av setVolumeTo: 0.0 forCategory: @ "Ringtone"];
It's very easy. Just a few words, I tried it. Although setVolumeTo is 0, the sound is only a small one, but there is still a small sound, but at least it is still mute.
The framework to use is Celestial. framework.
If the header is not ios6, please use class-dump.
I will paste the header in ios6:
@ Interface AVSystemController: NSObject
{
Struct AVSystemControllerPrivate * _ priv;
}
+ (Id) sharedAVSystemController;
+ (Void) initialize;
-(Void) postEffectiveVolumeNotification :( void *) arg1;
-(Void) postFullMuteDidChangeNotification :( void *) arg1;
-(Void) handleServerDied;
-(BOOL) okToNotifyFromThisThread;
-(Void) makeError :( id *) arg1 withDescription :( id) arg2 code :( long) arg3;
-(BOOL) setAttribute :( id) arg1 forKey :( id) arg2 error :( id *) arg3;
-(Id) attributeForKey :( id) arg1;
-(BOOL) allowUserToExceedEUVolumeLimit;
-(BOOL) currentRouteHasVolumeControl;
-(Id) pickableRoutesForCategory :( id) arg1;
-(Id) volumeCategoryForAudioCategory :( id) arg1;
-(Id) routeForCategory :( id) arg1;
-(BOOL) getVolume :( float *) arg1 forCategory :( id) arg2;
-(BOOL) enablePortDiscovery :( BOOL) arg1;
-(BOOL) getPortDiscoveryEnabled;
-(BOOL) setPickedRouteWithPassword :( id) arg1 withPassword :( id) arg2;
-(BOOL) setVolumeTo :( float) arg1 forCategory :( id) arg2;
-(BOOL) changeVolumeBy :( float) arg1 forCategory :( id) arg2;
-(BOOL) getActiveCategoryMuted :( char *) arg1 forRoute :( id) arg2 andDeviceIdentifier :( id) arg3;
-(BOOL) getActiveCategoryMuted :( char *) arg1;
-(BOOL) toggleActiveCategoryMutedForRoute :( id) arg1 andDeviceIdentifier :( id) arg2;
-(BOOL) toggleActiveCategoryMuted;
-(BOOL) getActiveCategoryVolume :( float *) arg1 andName :( id *) arg2 forRoute :( id) arg3 andDeviceIdentifier :( id) arg4;
-(BOOL) setActiveCategoryVolumeTo :( float) arg1 forRoute :( id) arg2 andDeviceIdentifier :( id) arg3;
-(BOOL) changeActiveCategoryVolumeBy :( float) arg1 forRoute :( id) arg2 andDeviceIdentifier :( id) arg3;
-(BOOL) getActiveCategoryVolume :( float *) arg1 andName :( id *) arg2;
-(BOOL) getActiveCategoryVolume :( float *) arg1 andName :( id *) arg2 fallbackCategory :( id) arg3;
-(BOOL) setActiveCategoryVolumeTo :( float) arg1;
-(BOOL) setActiveCategoryVolumeTo :( float) arg1 fallbackCategory :( id) arg2 resultVolume :( float *) arg3 affectedCategory :( id *) arg4;
-(BOOL) changeActiveCategoryVolumeBy :( float) arg1;
-(BOOL) changeActiveCategoryVolumeBy :( float) arg1 fallbackCategory :( id) arg2 resultVolume :( float *) arg3 affectedCategory :( id *) arg4;
-(Void) dealloc;
-(Id) init;
@ End