我想实现屏幕共享功能,例如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")
}
}
}
您能帮我找出我在做什么错吗?
我假设您开始在屏幕上方录制红色横幅广告。如果您希望在运行构建时调试扩展,请不要期望。
您需要从XCode-> Debug-> Attach手动添加扩展,以按PID或Name进行处理。单击该选项后,从那里选择扩展,然后您将拥有扩展调试器。
希望对您有帮助。
您还可以选择并运行扩展程序(而不是iOS目标)。然后,XCode会要求您“选择要运行的应用程序”,并列出设备上所有应用程序的列表。选择您的应用,然后单击“运行”。
然后您的应用程序将启动,但您的扩展程序将被调试(断点将应用,并且打印输出将显示在输出控制台中),您在控制视图中长按“录制/广播”按钮之后,选择您的扩展程序并开始广播。