RPBroadcastSampleHandler任何未调用的方法

问题描述 投票:4回答:2

我想实现屏幕共享功能,例如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 swift ios13 swift5 replaykit
2个回答
0
投票

我假设您开始在屏幕上方录制红色横幅广告。如果您希望在运行构建时调试扩展,请不要期望。

您需要从XCode-> Debug-> Attach手动添加扩展,以按PID或Name进行处理。单击该选项后,从那里选择扩展,然后您将拥有扩展调试器。

希望对您有帮助。


0
投票

您还可以选择并运行扩展程序(而不是iOS目标)。然后,XCode会要求您“选择要运行的应用程序”,并列出设备上所有应用程序的列表。选择您的应用,然后单击“运行”。

然后您的应用程序将启动,但您的扩展程序将被调试(断点将应用,并且打印输出将显示在输出控制台中),您在控制视图中长按“录制/广播”按钮之后,选择您的扩展程序并开始广播。

© www.soinside.com 2019 - 2024. All rights reserved.