CoreMIDI / PGMidi Виртуальная ошибка midi в iOS6
Столкнулся с двумя ошибками.
Этот код работал в iOS 4 и 5, но после обновления до 6 не работает (
Я нашел следующее, но нене знаю, как это исправить в коде.
Начиная с iOS 6, приложения должны иметь звуковой ключ в своих UIBackgroundModes, чтобы использовать CoreMIDIs MIDISourceCreate и MIDIDestinationCreate функции. Без установленного ключа эти функции будут возвращать kMIDINotPermitted (-10844).
2012-09-23 03: 40: 04.773 MidiStudio [1017: 907] Ошибка (создание виртуального источника MIDI): -10844: Ошибка домена = код NSMachErrorDomain = -10844 "Операция не моглане будет завершено. (Ошибка Маха -10844.)
2012-09-23 03: 40: 04.777 MidiStudio [1017: 907] Ошибка (создание виртуального назначения MIDI): -10844: ошибка домена = код NSMachErrorDomain = -10844 "Операция не моглане будет завершено. (Ошибка Маха -10844.)
Вот код для ролейисточник':
-(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;
}
}