You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在iOS Swift项目中配置Jitsi-meet框架以启用视频通话服务

How to Configure Jitsi Meet Framework in an iOS Swift Project for Video Calls

Alright, let's walk through exactly how to set up Jitsi Meet in your iOS Swift project to get video calls up and running. I've tackled this a few times, so I'll break it down step by step to avoid common pitfalls.

1. Prerequisites

First, make sure your environment meets these requirements:

  • Xcode 14.0 or later (older versions might work but I've tested with 14+ for reliable results)
  • iOS 13.0 as the minimum deployment target (Jitsi recommends this for full feature support)
  • A working CocoaPods installation (we'll use this for dependency management—SPM instructions are included too)

2. Integrate Jitsi Meet via CocoaPods

This is the most straightforward method for most projects.

  • Open your project's Podfile and add the following line inside your target block:
    pod 'JitsiMeet'
    
  • Run pod install in your terminal. Wait for the installation to finish—this might take a minute since Jitsi has several dependencies.
  • Close your Xcode project and open the .xcworkspace file from now on (never use the .xcodeproj again when working with CocoaPods).

Optional: Swift Package Manager

If you prefer SPM, add the Jitsi Meet package directly in Xcode:

  • Go to File > Add Packages
  • Paste https://github.com/jitsi/jitsi-meet-ios.git in the search bar
  • Select the latest stable version and add it to your app target

3. Configure Project Settings

There are a few critical settings you need to adjust to avoid runtime crashes or permission errors.

3.1 Enable Required Permissions

Jitsi needs access to the camera, microphone, and network. Add these entries to your Info.plist (right-click the file > Open As > Source Code, then paste inside the <dict> tag):

<!-- Camera access -->
<key>NSCameraUsageDescription</key>
<string>Need camera access for video calls</string>
<!-- Microphone access -->
<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for audio calls</string>
<!-- Network access (required for connecting to Jitsi servers) -->
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

Note: For production apps, you might want to restrict arbitrary loads to specific domains instead of enabling all, but this is fine for testing.

3.2 Disable Bitcode

Jitsi Meet does not support Bitcode. To disable it:

  • Select your project target in Xcode
  • Go to Build Settings
  • Search for Enable Bitcode and set it to No (make sure this is set for both your app target and the Pods target)

If you want users to receive call notifications while the app is in the background, enable VoIP background mode:

  • Go to Signing & Capabilities
  • Click + Capability and add Background Modes
  • Check the box for Voice over IP

4. Implement Video Call Functionality

Now let's write the code to start a video call.

4.1 Initialize Jitsi Meet

In your view controller (e.g., ViewController.swift), import JitsiMeet first:

import JitsiMeet

Then, set up the default Jitsi configuration early (like in viewDidLoad()):

override func viewDidLoad() {
    super.viewDidLoad()
    
    let jitsiConfig = JitsiMeetConferenceOptions.fromBuilder { builder in
        // Use the public Jitsi server (replace with your self-hosted server URL if needed)
        builder.serverURL = URL(string: "https://meet.jit.si")
        // Toggle features as needed
        builder.setFeatureFlag("welcomepage.enabled", withBoolean: false)
        builder.setFeatureFlag("chat.enabled", withBoolean: true)
    }
    JitsiMeet.sharedInstance().defaultConferenceOptions = jitsiConfig
}

4.2 Start a Conference

Add a button to your storyboard or SwiftUI view, then add an action to trigger the call:

@IBAction func startCallTapped(_ sender: UIButton) {
    let conferenceOptions = JitsiMeetConferenceOptions.fromBuilder { builder in
        // Set a unique meeting room name (users join the same room to connect)
        builder.room = "my-test-meeting-123"
        // Optional: Set user display name and email
        builder.userInfo = JitsiMeetUserInfo(displayName: "Jane Doe", email: "jane@example.com")
        // Optional: Mute video by default
        // builder.videoMuted = true
    }
    
    // Create and present the Jitsi view controller
    let jitsiVC = JitsiMeetViewController()
    jitsiVC.delegate = self
    jitsiVC.conferenceOptions = conferenceOptions
    present(jitsiVC, animated: true)
}

4.3 Handle Conference Callbacks (Optional)

Conform to the JitsiMeetViewControllerDelegate to track call events like start, end, or errors:

extension ViewController: JitsiMeetViewControllerDelegate {
    func conferenceTerminated(_ data: [AnyHashable : Any]?) {
        // Call ended—dismiss the Jitsi VC or update your UI
        dismiss(animated: true)
        print("Call ended successfully")
    }
    
    func conferenceJoined(_ data: [AnyHashable : Any]?) {
        print("Successfully joined the conference")
    }
    
    func error(_ data: [AnyHashable : Any]?) {
        if let errorMessage = data?["message"] as? String {
            print("Call error occurred: \(errorMessage)")
        }
    }
}

5. Test the Implementation

  • Connect a physical iOS device (simulators don't support camera/microphone for Jitsi calls)
  • Build and run the app
  • Tap the start call button—you should see the Jitsi meeting interface. Invite others by sharing the room name, and they can join via the Jitsi app or web.

Common Troubleshooting Tips

  • Permission errors: Double-check that you added the correct Info.plist entries—iOS won't prompt for permissions if the descriptions are missing.
  • Bitcode errors: Ensure Bitcode is disabled for all targets (your app and Pods).
  • Network issues: Make sure the device has a stable internet connection—Jitsi requires good bandwidth for smooth video calls.

内容的提问来源于stack exchange,提问作者Zeona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:34:29