ios - RPBroadcastSampleHandler 任何未调用的方法
问题描述
我想实现像Skype这样的屏幕共享功能(当应用程序在后台时,它也会共享iPhone的屏幕),为此我正在使用广播扩展。
这是我在 viewcontroller.swift 中的代码
import UIKit
import ReplayKit
@available(iOS 12.0, *)
class ViewController: UIViewController {
var broadcastPicker: RPSystemBroadcastPickerView?
var broadcastSession : NSObject?
override func viewDidLoad() {
super.viewDidLoad()
let kPickerFrame = CGRect(x: 100.0, y: 100.0, width: 100.0, height: 100.0)
broadcastPicker = RPSystemBroadcastPickerView(frame: kPickerFrame)
broadcastPicker?.backgroundColor = UIColor.green
broadcastPicker!.preferredExtension = "com.sharescreen.Recoder"
view.addSubview(broadcastPicker!)
extensionContext?.loadBroadcastingApplicationInfo(completion: {
(bundleID, displayName, appIcon) in
})
}
}
当我点击 RPSystemBroadcastPickerView 时,我会弹出开始广播,当我开始广播时,任何扩展方法都没有调用。
这是我的扩展类
class SampleHandler: RPBroadcastSampleHandler {
var session : VTCompressionSession?
override func broadcastStarted(withSetupInfo setupInfo: [String : NSObject]?) {
// User has requested to start the broadcast. Setup info from the UI extension can be supplied but optional.
}
override func broadcastPaused() {
// User has requested to pause the broadcast. Samples will stop being delivered.
}
override func broadcastResumed() {
// User has requested to resume the broadcast. Samples delivery will resume.
}
override func broadcastFinished() {
// User has requested to finish the broadcast.
}
override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) {
switch sampleBufferType {
case RPSampleBufferType.video:
// Handle video sample buffer
break
case RPSampleBufferType.audioApp:
// Handle audio sample buffer for app audio
break
case RPSampleBufferType.audioMic:
// Handle audio sample buffer for mic audio
break
@unknown default:
// Handle other sample buffer types
fatalError("Unknown type of sample buffer")
}
}
}
你能帮我找出我做错了什么吗?
解决方案
您还可以选择并运行扩展程序(而不是 iOS 目标)。然后 XCode 将询问您“选择要运行的应用程序”并列出您设备上的所有应用程序。选择您的应用程序,然后单击“运行”。
然后您的应用程序将启动,但在您长按控制视图中的录制/广播按钮,选择您的扩展程序并开始广播后,您的扩展程序将被调试(断点将应用并且打印将显示在输出控制台中)。
推荐阅读
- autodesk-forge - 无法准备应用程序包,因为它正被另一个进程使用
- php - 在 WooCommerce 中使用 AND 关系对 2 个类别术语进行税务查询
- amazon-web-services - 为什么使用 AWS4 签名时默认区域的 s3 请求会失败
- javascript - 2个相同的javascript,一个工作一个不
- flutter - 颤振颤振-web-sdk-windows-x64 下载失败
- python - Python:删除数据框的行并保留特定组
- python - 如何从 csv 文件创建字典列表?
- python - 无法安装 Python 模块 sib_api_v3_sdk
- r - 使用带有多个参数的 lapply() 生成 html 代码
- html - 有没有办法在没有 Javascript 的情况下显示表单提交的反馈?