CoreMIDI / PGMidi Виртуальная ошибка midi в iOS6
Столкнулся с двумя ошибками.
Этот код работал в iOS 4 и 5, но после обновления до 6 не работает (
Я нашел следующее, но не знаю, как это исправить в коде.
Beginning in iOS 6, apps need to have the audio key in their UIBackgroundModes in order to use CoreMIDI’s MIDISourceCreate and MIDIDestinationCreate functions. Without the key set, these functions will return kMIDINotPermitted (-10844).
2012-09-23 03: 40: 04.773 MidiStudio [1017: 907] Ошибка (создание виртуального источника MIDI): -10844: Ошибка домена = код NSMachErrorDomain = -10844 & quot; Операция не может быть завершена. (Ошибка Маха -10844.) & Quot;
2012-09-23 03: 40: 04.777 MidiStudio [1017: 907] Ошибка (создание виртуального назначения MIDI): -10844: Ошибка домена = код NSMachErrorDomain = -10844 & quot; Операция не может быть завершена. (Ошибка Маха -10844.) & Quot;
Вот код для «источника»:
-(void)setVirtualSourceEnabled:(BOOL)virtualSourceEnabled {
if ( virtualSourceEnabled == self.virtualSourceEnabled ) return;
if ( virtualSourceEnabled ) {
NSString *name = virtualEndpointName ? virtualEndpointName : [[[NSBundle mainBundle] infoDictionary] valueForKey:(NSString*)kCFBundleNameKey];
OSStatus s = MIDISourceCreate(client, (CFStringRef)name, &virtualSourceEndpoint);
NSLogError(s, @"Create MIDI virtual source");
if ( s != noErr ) return;
virtualSourceDestination = [[PGMidiVirtualSourceDestination alloc] initWithMidi:self endpoint:virtualSourceEndpoint];
[delegate midi:self destinationAdded:virtualSourceDestination];
[[NSNotificationCenter defaultCenter] postNotificationName:PGMidiDestinationAddedNotification
object:self
userInfo:[NSDictionary dictionaryWithObject:virtualSourceDestination
forKey:PGMidiEndpointKey]];
} else {
[delegate midi:self destinationRemoved:virtualSourceDestination];
[[NSNotificationCenter defaultCenter] postNotificationName:PGMidiDestinationRemovedNotification
object:self
userInfo:[NSDictionary dictionaryWithObject:virtualSourceDestination
forKey:PGMidiEndpointKey]];
[virtualSourceDestination release]; virtualSourceDestination = nil;
OSStatus s = MIDIEndpointDispose(virtualSourceEndpoint);
NSLogError(s, @"Dispose MIDI virtual source");
virtualSourceEndpoint = NULL;
}
}