2017-05-17 18 views
0

私のiOSアプリケーションでは、URLベースのオーディオアセットを使用して基礎となるAVPlayerを作成するカスタムオーディオプレーヤークラスがあります。それはすべて非常にバニラです - URLに基​​づいてAVPlayerItemをロードし、アセットデータを非同期的に読み込み、それを使ってAVPlayerインスタンスを作成します。AVPlayerはエラーがなくてもオーディオを再生しません

すべて機能は素晴らしいですが、AVPlayerがオーディオアセットを読み込んで正しく解析するケースが見つかりましたが、オーディオの再生は拒否されました。

これは、アプリを起動する前に2,3のゲームを開始したときに発生します。例えば。ミネクラフトとモニュメントバレー。これを再現するための防衛的な方法はありません(Minecraftを起動するとこのバグが現れることがありますが、時々そうではありません)。しかし、オーディオを使用するゲームをいくつか始めると、最終的にバグが表示されます。

アプリの現在の状態をデバッグすると、AVPlayerにエラーはありません。ステータスは再生準備が整っています。同じことがAVPlayerItemになります。アプリで音声を再生させる方法はありません。

...私がSpotifyを起動して曲を再生する場合を除きます。これにより、存在する可能性のあるオーディオロックが修正され、プレイヤーが再生しなくなります。 Spotifyを終了してアプリを開くと、オーディオプレーヤーでオーディオを再生できるようになります。

何が原因なのですか?私はアイデアがありません。

答えて

0

答えがわかりませんが、あなたのオーディオにAVSessionを設定したいと思うかもしれません。 AVSession infoオーディオは他のものより再生する必要があるか、電話がかかってきたか、バックグラウンドなどに行く場合は停止する必要があるかどうかを電話に伝えます。

このアプリケーションの一部では、あなたを正しく指定していない。

私は私のためにこのコードを使用:

do { 
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.interruptSpokenAudioAndMixWithOthers) 
    } 
catch { 
// report for an error } 

は、これは私のために働いたが、AVPlayerが異なるものがあり、それが助けかどうかを確認しようとするカテゴリオプションです。

This are the different Category Options for AVSessions

+0

答えとリンク、素晴らしいアドバイスをありがとう!しかし、私はすでにこれらのことをしています。 :/ –

+0

申し訳ありませんが私は正直なところ、私はAVPlayer奇妙な行動の束を扱っているより多くの助けになることはできませんでした。私が何かを見つけたり、アイデアを考えたら、私はあなたに知らせるでしょう!幸運:) – baldemora

+0

ありがとう、本当に感謝します! :) –

関連する問題