# 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 both `Objective‑C` and `Swift` and can be downloaded [here](/docs/in-app-calling/sdk-downloads). - **Objective-C version** - add the *Sinch.xcframework*: - Drag the *Sinch.xcframework* bundle from the SDK distribution package folder into the Frameworks section in the Xcode Project Navigator. - **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. **Note**: Both the Objective‑C and Swift SDKs depend on the following system frameworks and libraries. If you integrate manually, link these with your application target. If you use CocoaPods (Objective‑C) 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 (Objective‑C only) 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 (Swift only) 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."