> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daily.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Daily Client SDK for iOS

> Build real-time video and audio calling into your native iOS applications.

The Daily Client SDK for iOS is a native Swift library built on WebRTC. It handles media negotiation, network traversal, and participant management so you can focus on building your UI.

<CardGroup cols={3}>
  <Card title="Quickstart" icon="rocket" href="/docs/ios/quickstart">
    Build a working video call app step by step
  </Card>

  <Card title="Screen sharing" icon="display" href="/docs/ios/screen-share">
    Add screen share to your iOS app
  </Card>

  <Card title="API reference" icon="code" href="https://reference-ios.daily.co/">
    Full Swift API docs
  </Card>
</CardGroup>

## Hello, world

Add the SDK via Swift Package Manager (`https://github.com/daily-co/daily-client-ios.git`), then join a call:

```swift theme={null}
import Daily

class CallViewController: UIViewController {
    let call: CallClient = .init()
    var videoViews: [ParticipantId: VideoView] = [:]

    override func viewDidLoad() {
        super.viewDidLoad()
        call.delegate = self

        call.join(url: URL(string: "https://your-domain.daily.co/room-name")!) { result in
            switch result {
            case .success: print("Joined!")
            case .failure(let error): print("Error: \(error)")
            }
        }
    }

    @IBAction func didTapTurnOffCamera(_ sender: UIButton) {
        call.setInputEnabled(.camera, false)
    }
}

extension CallViewController: CallClientDelegate {
    func callClient(_ callClient: CallClient, participantJoined participant: Participant) {
        guard !participant.info.isLocal else { return }
        let videoView = VideoView()
        videoViews[participant.id] = videoView
        addVideoViewToMyUI(view: videoView)
        videoView.track = participant.media?.camera.track
    }

    func callClient(_ callClient: CallClient, participantUpdated participant: Participant) {
        videoViews[participant.id]?.track = participant.media?.camera.track
    }

    func callClient(_ callClient: CallClient, participantLeft participant: Participant, withReason reason: ParticipantLeftReason) {
        videoViews.removeValue(forKey: participant.id)
    }
}
```

## API structure

The SDK is organized around the tasks involved in building a call. For each task you get properties/methods to **update** state, properties to **get** current state, and **delegate callbacks** via `CallClientDelegate` to react to changes.

<CardGroup cols={2}>
  <Card title="Call lifecycle" icon="phone" href="https://reference-ios.daily.co/documentation/daily/callclient">
    `join()`, `leave()`, `callState`, `callClient(_:callStateUpdated:)`
  </Card>

  <Card title="Participants" icon="users" href="https://reference-ios.daily.co/documentation/daily/callclientdelegate">
    `participants()`, `participantJoined`, `participantUpdated`, `participantLeft`
  </Card>

  <Card title="Media inputs" icon="video" href="https://reference-ios.daily.co/documentation/daily/callclient/updateinputs(_:completion:)">
    `updateInputs()`, `setInputEnabled()`, `callClient(_:inputsUpdated:)`
  </Card>

  <Card title="Publishing" icon="signal-stream" href="https://reference-ios.daily.co/documentation/daily/callclient/updatepublishing(_:completion:)">
    `updatePublishing()`, `setIsPublishing()`, `callClient(_:publishingUpdated:)`
  </Card>

  <Card title="Subscriptions" icon="rss" href="https://reference-ios.daily.co/documentation/daily/callclient/updatesubscriptions(forparticipants:participantswithprofiles:completion:)">
    `updateSubscriptions()`, `updateSubscriptionProfiles()`, `setSubscriptionState()`
  </Card>

  <Card title="Active speaker" icon="microphone" href="https://reference-ios.daily.co/documentation/daily/callclient/activespeaker">
    `activeSpeaker`, `callClient(_:activeSpeakerChanged:)`
  </Card>
</CardGroup>

## Resources

<CardGroup cols={2}>
  <Card title="Demo app" icon="github" href="https://github.com/daily-demos/daily-ios-demo">
    A complete working example on GitHub
  </Card>

  <Card title="Starter kit" icon="toolbox" href="https://github.com/daily-demos/daily-ios-starter-kit">
    Production-ready boilerplate from Daily's engineering team
  </Card>
</CardGroup>

## Requirements

* iOS deployment target >= 13.0
* Xcode 13 or later
