I am making an iOS 8 Objective-C app (deployed on my iPhone 5) and I'm using this code to play a sound through the phone from the app:
@property (assign) SystemSoundID scanSoundID;
...
- (void)someFunction {
...
//Play beep sound.
NSString *scanSoundPath = [[NSBundle mainBundle]
pathForResource:@"beep" ofType:@"caf"];
NSURL *scanSoundURL = [NSURL fileURLWithPath:scanSoundPath];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)scanSoundURL, &_scanSoundID);
AudioServicesPlaySystemSound(self.scanSoundID);
...
}
This code works fine, but the beep.caf sound is quite loud. I want to play the beep sound at 50% volume (without changing the volume of the iPhone). In other words, I don't want to touch the iPhone's actual volume, I just want to play the sound with less amplitude so to speak.
How can I accomplish this (preferably with Audio Services like I'm using now)?
UPDATE
After trying to implement the answer from Louis, this code is not playing any audio (even though my phone is not on silent and my volume is turned up):
NSString *scanSoundPath = [[NSBundle mainBundle] pathForResource:@"beep"
ofType:@"caf"];
NSURL *scanSoundURL = [NSURL fileURLWithPath:scanSoundPath];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:scanSoundURL
error:nil];
player.volume = 0.5;
[player play];