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 to Process by PID or Nameから拡張機能を手動で追加する必要があります。それをクリックしたら、そこから拡張機能を選択すると、拡張デバッガーが表示されます。
これがお役に立てば幸いです。