一、在zoom marketplace创建通用app,zoom-recall 详见Zoom集会会议呆板人转写例子-CSDN博客
二、mac下按照Xcode,创建APP项目meetingbot4ios
三、本实用的SDK为MobileRTC,即Meeting SDK的iOS版本
四、依靠如下:
MobileRTC和CryptoSwift
五、全部代码如下(meetingbot4iosApp.swift):
- import SwiftUI
- import MobileRTC
- import CryptoSwift
- @main
- struct MeetingBot: App {
- @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
- @StateObject private var meetingInfo = MeetingInfo()
-
- var body: some Scene {
- WindowGroup {
- ContentView(meetingInfo: meetingInfo, appDelegate: appDelegate)
- }
- }
- }
- struct ZoomMeetingView: UIViewRepresentable {
- func makeUIView(context: Context) -> UIView {
- let view = MobileRTC.shared().getMeetingService()?.meetingView() ?? UIView()
- if view.subviews.isEmpty {
- print("Meeting view is empty")
- } else {
- print("Meeting view has subviews")
- }
- return view
- }
- func updateUIView(_ uiView: UIView, context: Context) {
- // Update the view if needed
- }
- }
- class MeetingInfo: ObservableObject {
- @Published var meetingUrl: String = "https://us05web.zoom.us/j/81334539494?pwd=sf96p7am967Oc3GI39J1yLWSPa6WnS.1"
- }
- struct ContentView: View {
- @ObservedObject var meetingInfo: MeetingInfo
- @ObservedObject var appDelegate: AppDelegate
-
- init(meetingInfo: MeetingInfo, appDelegate: AppDelegate) {
- self.meetingInfo = meetingInfo
- self.appDelegate = appDelegate
- self.appDelegate.meetingInfo = meetingInfo
- }
- var body: some View {
- VStack {
- TextField("Enter Meeting URL", text: $meetingInfo.meetingUrl)
- .textFieldStyle(RoundedBorderTextFieldStyle())
- .padding()
- // 显示会议状态
- Text("Meeting State: \(appDelegate.meetingState)")
- .padding()
- Button(action: {
- // Trigger initialization with the entered meeting URL
- self.appDelegate.initializeMobileRTCWithMeetingUrl(meetingInfo.meetingUrl)
-
- }) {
- Text("Join Meeting")
- }
- .padding()
- Button(action: {
- appDelegate.toggleRecording()
- }) {
- Text(appDelegate.recordingState == "stopped" ? "Start Recording" : "Stop Recording")
- }
- .padding()
- Text(appDelegate.transcriptText)
- .padding()
- ScrollView {
- Text(appDelegate.transcript.joined(separator: "\n"))
- .padding()
- }
- }
- }
- }
- class AppDelegate: NSObject, UIApplicationDelegate, ObservableObject, MobileRTCAuthDelegate, MobileRTCMeetingServiceDelegate {
- @Published var meetingNumber: String?
- @Published var password: String?
- @Published var recordingState: String = "stopped"
- @Published var transcript: [String] = []
- @Published var botId: String?
- @Published var meetingState: String = "Not Joined" // 新增会议状态属性
- @Published var transcriptText = "Loading..."
- var meetingInfo: MeetingInfo?
- var window: UIWindow?
- private var refreshTi
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |