AVPlayerViewController
アプリで短いビデオを再生するために使用します。
ユーザーがアプリでビデオを再生する前に、バックグラウンドでオーディオを再生しているアプリがある場合、ビデオ プレーヤーを閉じた後に、他のアプリのバックグラウンド オーディオ再生を再開したいと考えています。私は現在それを行うために使用AVAudioSession.setActive(false, with: .notifyOthersOnDeactivation)
します。
Apple の Music アプリと Podcasts アプリは、通話後に再生を再開しますAVAudioSession.setActive(false, with: .notifyOthersOnDeactivation)
が (通話なしでは再開されないため、この通話は有効であることを意味します)、私がテストしたサードパーティの音楽アプリやポッドキャスト アプリ (Spotify、SoundCloud、Amazon Music 、曇り)する。
これが私のコードです:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// I know it's not the best place to call setActive nor it covers all the cases. It's just a convenient place to put the code to test its effect after dismissing the video player.
do {
try AVAudioSession.sharedInstance().setActive(false, with: .notifyOthersOnDeactivation)
} catch {
print(error)
}
}
@IBAction func play(_ sender: Any) {
do {
try AVAudioSession.sharedInstance().setActive(true)
} catch {
print(error)
}
let playerController = AVPlayerViewController()
playerController.player = AVPlayer(url: URL(string: "http://gslb.miaopai.com/stream/UkjiD45ddxZFQ79I2bLaGg__.mp4")!)
playerController.player?.play()
present(playerController, animated: true)
}
最初は、これらのサード パーティ製アプリのせいではないかと思いました。しかし、公式の Twitter アプリでテストしたところ、Twitter アプリでビデオを再生した後にオーディオの再生を再開できることがわかりました。
それで、私は何を逃したのですか?Twitter アプリと同じように、これらのサードパーティ製アプリで動画再生後に音声再生を再開するにはどうすればよいですか?
PS: ここに完全なプロジェクトがあるので、興味のある人は誰でも試すことができます。