Я пытаюсь воспроизвести два разных файла в очереди. Один из них - интро-трек, а другой - основной трек.Как использовать AudioServicesRemoveSystemSoundCompletion Обратный звонок
Мой метод для настройки воспроизведения музыки
-(void)musicPlayBack:(CFStringRef)soundName{
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef = CFBundleCopyResourceURL(mainBundle
, (CFStringRef) soundName, CFSTR ("mp3"), NULL);
SystemSoundID soundID;
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, FinishedSoundPlayback, NULL);
AudioServicesPlaySystemSound(soundID);
}
-(void)playIntro:(NSString *)introTrackName{
NSArray *introTracks = [NSArray arrayWithObjects:@"heybaby",@"dumbson",@"heybadass",
@"heydarling",@"heyhoney",@"madam",@"sir", nil];
[self musicPlayBack:(__bridge CFStringRef)([introTracks objectAtIndex:2])];
}
-(void)playNotification:(NSString *)notificationTrackName{
[self musicPlayBack:(__bridge CFStringRef)(notificationTrackName)];
}
-(void)notifyWithSound:(int)batteryCase{
NSArray *mainSoundTracks = [NSArray arrayWithObjects:@"ten",@"twenty",@"twentyfive",@"thirty",
@"fourty",@"fifty",@"sixty",@"seventy",@"seventyfive",
@"eigthy",@"ninty",@"hundred",nil];
[self playIntro:@"someRandomIntro"];
while (introFinished==NO) {
if (introFinished==YES) {
break;
}
}
[self playNotification:[mainSoundTracks objectAtIndex:batteryCase]];
}
Это то, что я есть, прежде чем @implementation
BOOL introFinished = NO;
static void FinishedSoundPlayback(SystemSoundID mySSID, void* data){
introFinished = YES;
AudioServicesRemoveSystemSoundCompletion (mySSID);
NSLog(@"completion Callback");
}
Проблема не FinishedSoundPlayback никогда не вызывается.