2017-01-17 26 views
0

Ich habe eine App, die im iTunes App Store veröffentlicht wurde, und es hat Hintergrundmodus für Audio aktiviert.iOS-App Audio stoppt, wenn der Bildschirm automatisch nach dem Upgrade App auf xcode 8

Nach dem Update auf XCode 8, habe ich ein Update für meine App veröffentlicht, nach dem ich festgestellt habe, dass die App stoppt, wenn der Bildschirm gesperrt wird. Ich hatte sonst keine Änderungen am Hintergrundspiel vorgenommen. Nicht sicher, ob das Verhalten oder die Codierung Anforderungen für iOS geändert 9+

Hier ist, was mein Code tut:

App plist file: 

    <key>UIBackgroundModes</key> 
    <array> 
     <string>audio</string> 
     <string>remote-notification</string> 
    </array> 


AudioController.m 

-(void)setBackgroundPlay:(bool)backgroundPlay 
{ 
    NSLog(@"setBackgroundPlay %d", backgroundPlay); 
    AVAudioSession *mySession = [AVAudioSession sharedInstance]; 
    NSError *audioSessionError = nil; 

    if (backgroundPlay) { 

     // Assign the Playback category to the audio session. 
     [mySession setCategory: AVAudioSessionCategoryPlayback 
         error: &audioSessionError]; 

     OSStatus propertySetError = 0; 

     UInt32 allowMixing = true; 

     propertySetError = AudioSessionSetProperty (
                kAudioSessionProperty_OverrideCategoryMixWithOthers, // 1 
                sizeof (allowMixing),         // 2 
                &allowMixing           // 3 
                ); 
     if (propertySetError != 0) { 
      NSLog (@"Error setting audio property MixWithOthers"); 
     } 

    } else { 
     // Assign the Playback category to the audio session. 
     [mySession setCategory: AVAudioSessionCategoryPlayback 
         error: &audioSessionError]; 
    } 
    if (audioSessionError != nil) { 
     NSLog (@"Error setting audio session category."); 
    } 
} 

Die Audio-Wiedergabe wird fortgesetzt, wenn ich die app minimieren, und es wird fortgesetzt, bis der Bildschirm auto- spielen Schlösser. Immer wenn der Bildschirm eingeschaltet wird (z. B. wenn eine Benachrichtigung empfangen wird), wird der Ton wieder aufgenommen und dann wieder ausgeschaltet, wenn der Bildschirm schwarz wird.

Da dieses Material erwähnt, verwendet wird, zu arbeiten und scheint Verhalten nach der Aktualisierung zu Xcode geändert haben 8/iOS 9.

Ich habe versucht, das Forum und an anderen Orten für Menschen erlebt ähnliche Fragen suchen, aber haven Ich konnte nichts finden.

Irgendwelche Vorschläge, oder ein frisches Paar von Augen, die dies betrachten würden geschätzt werden!

Danke, Sridhar

+1

Haben Sie Hintergrund-Audio haben im Capabilities Abschnitt der Projekteinstellungen aktiviert? – raidfive

+0

Ja, das tue ich! Ich habe das Problem und die Lösung gefunden, die ich im Folgenden hinzufügen werde. –

Antwort

1

Ok, ich fand das Problem! Alles war in Ordnung, wie ich Hintergrund-Audio eingerichtet hatte.

Der Schlüssel Werbegeschenk an der Konsole des Geräts war auf der Suche, wenn die Bildschirmsperre eingeschaltet hatte:

17. Januar 11.03.59 My-iPad Talanome [1179]: kAudioUnitErr_TooManyFramesToProcess: inFramesToProcess = 4096, mMaxFramesPerSlice = 1156

Ein wenig Suche führte mich zu dieser technischen Anmerkung - https://developer.apple.com/library/content/qa/qa1606/_index.html

Der Schlüssel ist dies -

// set the mixer unit to handle 4096 samples per slice since we want to keep rendering during screen lock 
UInt32 maxFPS = 4096; 
AudioUnitSetProperty(mMixer, kAudioUnitProperty_MaximumFramesPerSlice, kAudioUnitScope_Global, 0, 
        &maxFPS, sizeof(maxFPS)); 

Ich hatte meine maxFramesPerSlice nicht eingestellt, und so war es Standard 1156, die zu klein war, wenn die automatische Sperre aktiviert ist (4096). Die Einstellung von maxFramesPerSlice auf 4096 in meiner Audio-Initialisierung hat sichergestellt, dass ich genug habe, wenn der Bildschirm gesperrt wird.

Hoffe das hilft anderen, die ähnliche Probleme haben können!

-Sridhar

Verwandte Themen