В настоящее время в моем приложении воспроизводится фоновая музыка.
в:
-(void)viewDidLoad
Я запускаю музыку, используя:
[self LoadMusic];
Это в основном запускает музыкальные буферы, а затем, если в настройках указано, что «Звук включен», музыка запускается.
Проблема, с которой я столкнулся, заключается в том, что когда я перемещаю представления, музыка продолжает воспроизводиться (как и должно быть), но когда вы возвращаетесь к контроллеру представления, где музыка была впервые запущена, она снова активируется.
Так что в итоге вы получаете одну и ту же музыку, зацикливающуюся друг на друге.
Я пробовал несколько вещей, таких как:
if(MusicPlay.playing){
// do nothing
}else{
// start music
[self LoadMusic];
}
Это код для loadMusic
- (void) LoadMusic{
//Notification for stoping
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopMusic) name:@"StopMusic" object:nil];
//Notification for playing
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playMusic) name:@"PlayMusic" object:nil];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *SoundSwitch = [defaults stringForKey:@"Sound_EnabledS"];
// grab the path to the caf file
NSString *soundFilePath =
[[NSBundle mainBundle] pathForResource: @"Menu_Loop"
ofType: @"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
// create a new AVAudioPlayer initialized with the URL to the file
AVAudioPlayer *newPlayer =
[[AVAudioPlayer alloc] initWithContentsOfURL: fileURL
error: nil];
// set our ivar equal to the new player
self.MusicPlay = newPlayer;
// preloads buffers, gets ready to play
[MusicPlay prepareToPlay];
MusicPlay.numberOfLoops = -1; // Loop indefinately
if ([SoundSwitch isEqualToString:@"1"]){
[self.MusicPlay play]; // Plays the sound
}else{
[self.MusicPlay stop]; // Stops the sound
}
}
Но это не работает, так как не видит MusicPlay.playing верно только после перезапуска представления
Если у кого-то есть хороший способ решить эту проблему.
Пожалуйста, дайте мне знать.
Спасибо.