Play Audio iOS Objective-C

You need to store a strong reference to 'AVAudioPlayer'

@property (strong) AVAudioPlayer *audioPlayer;

And if you are sure that your audio file is in following Bundle Resources, it should play.

Project>Build Phases>Copy


Maybe you should try using the NSBundle method pathForResource:ofType: method to create the path to the file.

The following code should successfully play an audio file. I have only used it with an mp3, but I imagine it should also work with m4a. If this code does not work, you could try changing the format of the audio file. For this code, the audio file is located in the main project directory.

/* Use this code to play an audio file */
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"test"  ofType:@"m4a"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1; //Infinite

[player play];

EDIT

Ok, so try this:

NSString *soundFilePath = [NSString stringWithFormat:@"%@/test.m4a",[[NSBundle mainBundle] resourcePath]];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1; //Infinite

[player play];

Also, make sure you do the proper imports:

#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>

To play file with extension .caf, .m4a, .mp4, .mp3,.wav, .aif


Download following two files from GitHub

SoundManager.h
SoundManager.m

Add these files to your project

Also add audio files to resource folder (sample files)

mysound.mp3, song.mp3

Import header file in desired file

#import "SoundManager.h"

And add following two lines in -(void)viewDidLoad

[SoundManager sharedManager].allowsBackgroundMusic = YES;
[[SoundManager sharedManager] prepareToPlay];

Use following line to play sound (mysound.mp3)

[[SoundManager sharedManager] playSound:@"mysound" looping:NO];

Use following line to stop the sound (mysound.mp3)

[[SoundManager sharedManager] stopSound:@"mysound"];

Also you can play music (song.mp3) as

[[SoundManager sharedManager] playMusic:@"song" looping:YES];

And can be stop music as

[[SoundManager sharedManager] stopMusic];

Complete Documentation is on GitHub