2017-01-05 12 views
3

MPRemoteCommandCenterとMPNowPlayingInfoCenterを使用してバックグラウンドでオーディオの再生を制御しています。バックグラウンドでオーディオを再生するときにiOSロック画面の音量バーを非表示にする

let commandCenter = MPRemoteCommandCenter.sharedCommandCenter() 

commandCenter.pauseCommand.enabled = true 
commandCenter.pauseCommand.addTarget(self, action: #selector(AudioPlayer.remoteCmdPause)) 

commandCenter.playCommand.enabled = true 
commandCenter.playCommand.addTarget(self, action: #selector(AudioPlayer.remoteCmdplay)) 

や音声データを更新する:setupコマンドコールバックに

let artWork = MPMediaItemArtwork(image: image) 
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = [ 
    MPMediaItemPropertyTitle: self.title, 
    MPMediaItemPropertyArtwork: artWork, 
    MPMediaItemPropertyPlaybackDuration: self.duration, 
    //MPNowPlayingInfoPropertyElapsedPlaybackTime: 0 
] 

これは私がremoteCmdPauseとremoteCmdPlayコールバックで処理することができ、一時停止/再生ボタンを示しています。ボリュームの変化に反応できるように、ハンドラを非表示にするか登録するかを示すボリュームバーも表示されます。

音量を増減する以外の操作を行うために、音量変更のコールバックを登録することはできますか?
バックグラウンドでオーディオを再生するときに、ロック画面から音量コントロールバーを非表示にすることはできますか?

+0

こんにちは、あなたが上に示した線をどこに置くのか正確に教えていただけますか?オーディオの再生が開始された後、私はこれらの回線に電話をしなければなりませんか?あなたの助けを借りて、私はロック画面コントロールを表示することができません。 – MikeG

+0

私はバックグラウンド状態を扱うシングルトンを持っています。 'init()'ではAVAudioSessionを設定しました。ある時点で、シングルトン上でconfigure関数を呼び出して、コマンドとセットアップコールバック(上記の最初のセット)を有効にします。 'nowPlayingInfo'の初期値は、configure中にも設定されます(2行目の設定)。 'nowPlayingInfo'は必要に応じて定期的に更新することができます。私。音声セッションが設定され、音声再生が開始される前にコールバックが設定されます。 – sigrem

+0

アプリがバックグラウンドに入ると、その時点で 'init()'が呼び出されますか?しかし、アプリケーションがアクティブな状態でオーディオを再生する前にAVAudioSessionをセットアップしていないのですか? – MikeG

答えて

0

私の質問のコールバック部分については、ロック画面からのボリューム変更を処理する特定のリモートコマンドがないようです。単に "outputVolume"(observeValueForKeyPathを介して)を観察することはそのトリックを行います。
ボリュームバーを非表示にすることは、まだ問題ではありませんが(少なくとも私の部分では)もう必要ありません。

関連する問題