2017-01-17 2 views
0

iTunes App Storeに公開されているアプリがあり、オーディオ用にバックグラウンドモードが有効になっています。アプリをxcodeにアップグレードした後に画面が自動ロックされると、iOSアプリの音声が停止する8

Xcode 8にアップデートした後、私は自分のアプリのアップデートを公開しました。その後、画面がロックされるたびにアプリの再生が停止することがわかりました。私はそうでなければバックグラウンドプレイを変更していなかった。

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."); 
    } 
} 

私はアプリを最小化したときに再生を続けるんオーディオ、そしてそれは、画面自動までプレイし続けて:行動やコーディングの要件が

9+ iOS用に変更されている場合わからない。ここに私のコードが何をするかですロック。画面がオンになると(通知を受信したときなど)、音声が再開され、画面が黒くなると電源が切れます。前述のように

は、このようなものが働いて、とXcode 8/iOSの9

私は、人々のためのフォーラムや他の場所で同様の問題を経験する検索しようとしたが、避難所への更新後の挙動を変更しているようです何かを見つけることができました。

これを見ていると、何か示唆、または目の新しいペアが感謝されます!

おかげで、[OK]を シュリ​​ダール

+1

プロジェクト設定のCapabilitiesセクションで背景音が有効になっていますか? – raidfive

+0

はい、あります!私は問題と解決策を見つけることができました。 –

答えて

1

は、私が問題を発見しました!バックグラウンドオーディオをどのようにセットアップしたかに関しては、すべてが大丈夫でした。

画面ロックがオンになっていたときのキーのプレゼントは、デバイスのコンソールを見ていた

1月17日11時03分59秒マイアプリTalanome [1179]:kAudioUnitErr_TooManyFramesToProcess:inFramesToProcess = 4096、mMaxFramesPerSlice = 1156

少し検索は、このテクニカルノートに私を導いた - https://developer.apple.com/library/content/qa/qa1606/_index.html

キーはこれです -

// 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)); 

私はmaxFramesPerSliceを設定していなかったので、デフォルトでは1156になりました。これは、自動ロックがオンになっているとき(4096)は小さすぎます。私のオーディオの初期化でmaxFramesPerSliceを4096に設定すると、画面がロックされたときに十分なことが保証されました。

似たような問題に直面している可能性のある他の人に役立ちます。

-Sridhar

関連する問題