# First time setup

Follow this step-by-step guide to set up the Sinch In-app Calling SDK for the first time.

## Register an application

> 1. Register a Sinch Developer account [here](https://dashboard.sinch.com/signup).
2. Setup a new Application using the Dashboard where you can then obtain an *Application Key* and an *Application Secret*.



## Downloads

Minimum supported deployment target is `iOS 12.0`.

### Manual integration

The Sinch SDK is available in `Swift` and can be downloaded [here](/docs/in-app-calling/sdk-downloads).

- **Swift version** - add the *SinchRTC.xcframework*:
  - Drag the *SinchRTC.xcframework* bundle from the SDK distribution package folder into the Frameworks section in the Xcode Project Navigator and set it to Embed & Sign.
- **Objective-C version** - from `v.5.39` Objective-C SDK is not available.


Swift Runtime Support Required for Objective-C Projects
For more details, see the [Swift Runtime Support section in Miscellaneous](/docs/in-app-calling/ios/miscellaneous/#swift-runtime-support-for-objective-c-projects).

**Note**: The Swift SDK depends on the following system frameworks and libraries. If you integrate manually, link these with your application target. If you use CocoaPods (Swift) or Swift Package Manager (Swift), these are linked for you:

> *libc++.dylib* (*libc++.tbd*), *libz.tbd*, *Security.framework*, *AVFoundation.framework*, *AudioToolbox.framework*, *VideoToolbox.framework*, *CoreMedia.framework*, *CoreVideo.framework*, *CoreImage.framework*, *GLKit.framework*, *OpenGLES.framework*, *QuartzCore.framework*, *Metal.framework*, *MetalKit.framework*, *PushKit.framework*, *SystemConfiguration.framework*


Sample applications are bundled with the SDK package. You can also find the Swift reference application on GitHub:

- [Swift reference application on GitHub](https://github.com/sinch/rtc-reference-applications/tree/master/ios)


### CocoaPods

1. Create a *Podfile* and configure it like this:



```ruby
platform :ios, '12.0'

# add your target name here
target 'YourApp' do
  pod 'SinchRTC', 'x.y.z'
  workspace './YourApp.xcworkspace'
end
```

1. Then install dependencies:



```bash
pod install
```

See the CocoaPods page: [SinchRTC on CocoaPods](https://cocoapods.org/pods/SinchRTC)

### Swift Package Manager

1. In Xcode, go to **File** → **Add Package Dependencies...**
2. Repository URL:



```
https://github.com/sinch/sinch-ios-sdk-spm
```

1. In the configuration view, choose one of the following Dependency Rules:
  - Branch: select `dynamic` (or `main`) to link a dynamic xcframework — always uses the latest available dynamic SDK version
  - Branch: select `static` to link a static xcframework — always uses the latest available static SDK version
  - Version: select **Exact Version** and enter "x.y.z" — links the dynamic xcframework for that specific version
2. Click **Add Package**.


Notes:

- For `dynamic`/`main`: in your app target → General → Frameworks, Libraries, and Embedded Content, set SinchRTC to **Embed & Sign**.
- For `static`: set SinchRTC to **Do Not Embed**. No extra system frameworks are required; the package auto‑links what it needs.
- Selecting a Branch rule tracks the branch tip; you always get the latest SDK matching that framework type (dynamic or static).
- Selecting an Exact Version resolves to the dynamic xcframework release for that version.


For more details, see: [sinch-ios-sdk-spm on GitHub](https://github.com/sinch/sinch-ios-sdk-spm)

## Capabilities and Info.plist

Capabilities/entitlements:

- Enable Push Notifications capability for your app target, which adds `aps-environment` to your entitlements.


Update *Info.plist* for voice calling functionality:

- Required background modes (`UIBackgroundModes`):
  - `audio` — App plays audio (or streams audio/video using AirPlay)
  - `voip` — App provides Voice over IP services
- Privacy - Microphone Usage Description (`NSMicrophoneUsageDescription`):
Provide a reason why the app needs microphone access (required).
See Apple docs: https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription
Example: "Application wants to use your microphone to be able to capture your voice in a call."
- Privacy - Camera Usage Description (`NSCameraUsageDescription`) if you enable video:
Provide a reason why the app needs camera access (required when using video).
See Apple docs: https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription
Example: "Application wants to use your camera to be able to make a video call."