Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

xcode cannot get sound file to play with AVAudioPlayer

I am new to iOS and trying to add sound to my app. I have followed several tutorials about adding a simple sound file to my project, but ALL with the same result. I get no errors, but no sound plays. Any ideas on what I am doing wrong? Any help would be appreciated!

- (IBAction)playSound:(id)sender {

    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
    NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
    NSLog(soundFilePath);

    NSError *error;
    AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:&error];
    player.numberOfLoops = 1; 

    [player play];

 }

**UPDATE***

So I never had any luck with the above code which is very discouraging, but I did end up getting it to work using the AudioToolbox Framework instead, using this:

SystemSoundID soundID;
NSString *soundFile = [[NSBundle mainBundle]
                       pathForResource:@"test" ofType:@"mp3"];
AudioServicesCreateSystemSoundID((__bridge  CFURLRef)
                                 [NSURL fileURLWithPath:soundFile], & soundID);
AudioServicesPlaySystemSound(soundID);

Can anyone explain to me the difference, why this one works and the other does not?? I am curious more than anything. Would love some clarification.

like image 686
mablecable Avatar asked Jan 29 '26 07:01

mablecable


1 Answers

Finally figured it out. I needed to create a property for AVAudioPlayer in my header file in order to get it to work. Here is what I did:

// .h file
@interface ThirdViewController : UIViewController {

    AVAudioPlayer *audioPlayer;

}
@property (nonatomic, retain) AVAudioPlayer *audioPlayer;



- (void) playSound     //method in .m file
{
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
                                          pathForResource:@"test" 
                                          ofType:@"mp3"]];
    NSError *error;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    [audioPlayer play];
}
like image 94
mablecable Avatar answered Jan 30 '26 23:01

mablecable



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!