Konfrontiert mit zwei Fehlern.CoreMIDI/PGMidi Virtueller Midifehler in iOS6
Dieser Code funktioniert in iOS 4 und 5, aber nach dem Update auf 6, ist es nicht funktioniert (
ich folgendes festgestellt, aber nicht wissen, wie man es beheben im Code.
Ab iOS 6, müssen Anwendungen, die Audio-Taste in ihrer UIBackgroundModes haben, um die Coremidi MIDISourceCreate und MIDIDestinationCreate Funktionen. Ohne den Schlüsselsatz zu verwenden, werden diese Funktionen geben kMIDINotPermitted (-10.844).
2012-09-23 03: 40: 04.773 MidiStudio [1017: 907] Fehler (Erstelle MIDI virtual sour ce): -10844: Fehlerdomäne = NSMachErrorDomain Code = -10844 "Die Operation konnte nicht abgeschlossen werden. (Mach Fehler -10844.) "
2012-09-23 03: 40: 04.777 MidiStudio [1017: 907] Fehler (MIDI virtuellen Ziel erstellen): -10844: Fehler Domain = NSMachErrorDomain Code = -10844" Die Operation konnte nicht abgeschlossen werden. (. Mach Fehler -10844)“
Hier Code für 'Quelle'.
-(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;
}
}
Hinweis für sich selbst: Lesen Sie die Versionshinweise. –
FYI, der Name des benutzerfreundlichen Plist-Eintrags lautet "Erforderliche Hintergrundmodi" –