ios - 如何在iOS中将电话应用程序发送到后台
问题描述
在我的应用程序中,我有一个要求。我正在运行我的应用程序并使用AVPlayerViewcontroller
. 在中间我接到了电话,我已经接听了电话,我的视频将暂停。5秒后,我将从服务器获取新的 url 以播放AVPlayerViewcontroller
。那个时候新的网址在后台播放可以听到声音和电话。在这种情况下,我想将手机应用程序发送到后台,并希望看到在 avplayer 中播放的视频。
请让我知道有什么方法可以实现这一点。
解决方案
迅速:
- 观察中断通知
func setupNotifications() {
let notificationCenter = NotificationCenter.default
notificationCenter.addObserver(self,
selector: #selector(handleInterruption),
name: .AVAudioSessionInterruption,
object: nil)
}
- 响应中断通知
@objc func handleInterruption(notification: Notification) {
guard let userInfo = notification.userInfo,
let typeValue = userInfo[AVAudioSessionInterruptionTypeKey] as? UInt,
let type = AVAudioSessionInterruptionType(rawValue: typeValue) else {
return
}
if type == .began {
// Interruption began, take appropriate actions
}
else if type == .ended {
if let optionsValue = userInfo[AVAudioSessionInterruptionOptionKey] as? UInt {
let options = AVAudioSessionInterruptionOptions(rawValue: optionsValue)
if options.contains(.shouldResume) {
// Interruption Ended - playback should resume
} else {
// Interruption Ended - playback should NOT resume
}
}
}
}
推荐阅读
- javascript - 在某个元素之后查找类,即使它们不是兄弟姐妹
- ios - iOS 13 和水平滚动:原生延迟加载?
- caching - MAMP - 本地主机上的页面不刷新 (PHP 7.3.8)
- java - 使用 Spring Boot 从 Kafka 消费时启动 gradle 项目时出错:“java.lang.IllegalStateException: Error processing condition on ...”
- php - VAR_DUMP 显示结果时未生成 JSON
- c# - 与工厂方法的定义混淆
- c++ - 前向声明函数和 SFINAE
- algorithm - 这个函数的空间和时间复杂度是多少,它根据从尾部的位置获取链表中的节点?
- c# - 直接从 AWS S3 存储桶读取对象并使用 SpreadsheetGear 返回工作簿
- ios - 快速导航控制器在尝试导航到另一个视图控制器时返回 nil