---
updatedAt: 2026-08-03T07:46:15.000Z
agentTools:
  projectIndex: https://developers.taboola.com/taboolasdk/llms.txt
---

# First Steps

*iOS Web* - First Steps

<Callout icon="✅" theme="okay">
  While reading the documentation, take a look at our [Sample App](https://developers.taboola.com/taboolasdk/docs/sample-code).
</Callout>

> 📘
>
> The steps described on this page are required for both Classic *and* Web integrations.

> 🚧 XCFramework bundle
>
> **Taboola SDK** is built as an <a target="_blank" href="https://developer.apple.com/documentation/xcode/creating-a-multi-platform-binary-framework-bundle">XCFramework bundle</a>.
>
> When using [Carthage](#flow-3-install-with-carthage), make sure to reference the bundle accordingly - e.g. `TaboolaSDK.xcframework`.

### Installation overview

1. Install the Taboola SDK, using *any one* of the following *dependency managers*:
   1. **Swift Package Manager (SPM)**
   2. **CocoaPods**
   3. **Carthage**
2. (*Recommended*) [Add the SKAdNetwork ID for Taboola](#add-the-skadnetwork-id-for-taboola).

***

### Flow 1: Install with SPM (Swift Package Manager)

1. Within `Xcode`, select the **`Help`** menu. Start typing `"Add Packages..."`, and then select it from the options shown.
2. A modal dialogue displays:
   1. In the search box (*top, right*), paste in this URL: `https://github.com/taboola/taboola-spm-ios-sdk`.
      > Information about the Taboola SDK package is shown.
   2. **Tip**: Using the dropdown provided (*top*), add a dependency rule - e.g. `Up To Next Major Version`.
   3. Click on ‘Add Package’ (*bottom, right*).
      > The package tree displays in the Project navigator pane, under **`Package Dependencies`**.

### Flow 2: Install with CocoaPods

#### Install CocoaPods on your system

If not already present, install **CocoaPods** on your system:

1. Run the following command from the **Terminal**:

```shell Terminal
$ sudo gem install cocoapods
```

2. Wait for the installation to complete. Then run the following command to complete the setup:

```shell Terminal
pod setup --verbose
```

<Callout icon="📘" theme="info">
  The above installation is required _once_ per system.
</Callout>

#### Install Taboola SDK for your project

1. Using the **Terminal**, navigate to your **iOS project directory** and run the following command:

```shell Terminal
$ pod init
```

<Callout icon="📘" theme="info">
  This creates a <a href="https://guides.cocoapods.org/using/the-podfile.html" target="_blank">*Podfile*</a> for your project.
</Callout>

2. Using a **text editor**, open your *Podfile*. Add the Taboola SDK dependency, with an exact version number - and save:

```yaml Podfile
target 'DemoProject' do
 
  # Comment out the next line if you're not using Swift and you don't want to use dynamic frameworks.
  use_frameworks!

  # Taboola SDK
  pod 'TaboolaSDK', '4.2.6'

end
```

<Callout icon="🚧" theme="warn">
  Make sure to indicate the [**latest version**](https://developers.taboola.com/taboolasdk/docs/ios-changelog) - e.g. `4.2.6`.
</Callout>

3. Using the **Terminal**, navigate to your **iOS project directory** and install the Taboola SDK:

```shell Terminal
$ pod install
```

4. **Quit** **Xcode** and open the newly created **workspace** file - e.g. `DemoProject.xcworkspace`.

<Callout icon="🚧" theme="warn">
  From this point onward, use the **workspace** (`.xcworkspace`) file, **not** the **project**  (`.xcodeproj`) file.
</Callout>

> 📘 Update vs Install
>
> If you *already* installed the **Taboola SDK** and just need to *update* the version - e.g. from `4.0.0` to `4.0.3` - you can use the `update` command:
>
> 1. Edit the Podfile (as described above) and change the version number.
> 2. Run: `pod update`.
>
> See: <a href="https://guides.cocoapods.org/using/pod-install-vs-update.html" target="_blank">*pod install vs. pod update*</a>

***

### Flow 3: Install with Carthage

#### Install Carthage on your system

If not already present, install **Carthage** on your system:

1. In the Mac terminal, use Homebrew to install Carthage:

```shell Terminal
$ brew update
$ brew install carthage
```

<Callout icon="📘" theme="info">
  This installation is required _once_ per system.
</Callout>

#### Install Taboola SDK for your project

1. Using a **text editor**, open your *Cartfile*. Enter the Taboola SDK dependency, with an exact version number, and save:

```yaml Cartfile
binary "https://cdn.taboola.com/taboola-mobile-sdk/ios/carthage/TaboolaSDK.json" == 4.2.6
```

<Callout icon="🚧" theme="warn">
  Make sure to indicate the [**latest version**](https://developers.taboola.com/taboolasdk/docs/ios-changelog) - e.g. `4.2.6`.
</Callout>

2. Using the Mac terminal, run `carthage update` to build the framework.
3. In the Xcode project navigator, select the project node (*top, left*), and the `General` tab (*right*).
4. Scroll down to `Frameworks, Libraries and Embedded Content` and drag your `TaboolaSDK.xcframework` file into Xcode to add it.
5. Still within your project settings, select the `Build Phases` tab (*top, right*).
6. Click the `+` icon and select `New Run Script Phase`:

> a. Specify your shell (e.g.: `/bin/sh`).
> b. Add the following line to the script area (below the shell path):

```shell Intel
$ /usr/local/bin/carthage copy-frameworks
```
```shell Apple silicon
$ /opt/homebrew/bin/carthage
```

> 🚧 Apple silicon machine
>
> On an **Apple silicon** machine, **Homebrew** installs Carthage **on a different path**.
>
> **Use this path**: `/opt/homebrew/bin/carthage`

> c. Under `Input Files`, add the paths to the frameworks that you want to use. For example:

```shell Adding Paths to the Framework - Input
$(SRCROOT)/Carthage/Build/iOS/TaboolaSDK.xcframework
```

> d. Under `Output Files`, add the paths to the copied frameworks. For example:

```shell Adding Paths to the Framework - Output
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/TaboolaFramework.xcframework
```

***

### Add the skAdNetwork ID for Taboola

With the release of **iOS 14**, you need to include the IDs of all your Ad Networks in **Info.plist**.

#### Method 1 (via the UI):

In **Xcode**:

1. Open **Info.plist** from the project navigator.
2. Next to the top-level key, click on **Add** (**+**):
   1. Enter **SKAdNetworkItems** as the new key's name.
   2. Select **Array** as the type.
3. Expand the newly created **Array** key (using the *arrow*).
4. Click on **Add** (**+**) and select **Dictionary** as the new key's type.

##### To add the **Taboola Network** ID:

1. Expand the newly created **Dictionary** key (using the *arrow*).
2. Click on **Add** (**+**):
   1. Enter **SKAdNetworkIdentifier** as the new key's name.
   2. Leave the type as **String**.
   3. Enter **p4ybsjem3u.skadnetwork** as the value.

Your newly created entries should like this:

<HTMLBlock>{`
<img class="image-align-left" src="https://files.readme.io/f5de156-plist.png"/>
`}</HTMLBlock>

<Callout icon="📘" theme="info">
  To add more Ad Networks, repeat the previous step:

  * Enter **SKAdNetworkIdentifier** as the name of _each_ new key.
  * Enter the Ad Network's unique ID as the value of the key.
</Callout>

#### Method 2 (via XML):

Edit **Info.plist** in a text editor and add this code snippet:

```xml
<key>SKAdNetworkItems</key>
	<array>
		<dict>
			<key>SKAdNetworkIdentifier</key>
			<string>p4ybsjem3u.skadnetwork</string>
		</dict>
	</array>
```

### Troubleshooting

#### iPhone simulator with Apple silicon

##### Problem

In some cases, when running the iPhone **simulator** with an **Apple silicon** machine, Xcode throws the following error:

```objectivec Console
building for iOS Simulator, but linking in dylib built for iOS, file '../TaboolaSDK.xcframework/TaboolaSDK' for architecture arm64
```

<Callout icon="📘" theme="info">
  This issue affects the simulator **only** - not real devices.
</Callout>

##### Resolution

To work around this problem, add `arm64` to the excluded architectures for both your project *and* your Podfile.

###### Step 1: Update your project settings

Using Xcode:

1. Select the project within the project navigator (top, left).
2. Select the `Build Settings` tab (right). Make sure that the `All` tab (just below) is also selected.
3. Under `Architectures`, locate the `Excluded Architectures` node.
4. Next to the `Debug` or `Release` node, click on the `+` icon to add a new exclusion:
   * For the key, select `Any iOS Simulator SDK`.
   * For the value, type in `arm64`.

<Callout icon="📘" theme="info">
  Depending on your needs, add an exclusion under **Debug** or **Release** - or both.
</Callout>

5. Scroll down to the `Build Options` section, and locate the `Validate Workspace` node.
   * Set the value to `Yes`.

<Callout icon="📘" theme="info">
  Depending on your needs, set the value for **Debug** or **Release** - or both.
</Callout>

###### Step 2: Update your Podfile

Navigate to your project's `ios` directory, and edit your *Podfile* to include the following:

```yaml Add to your Podfile
post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
  end
end
```

###### Additional steps

If the above steps do not resolve the problem, you may need to:

* Update your existing pods (a sample script is provided below).
* `clean` and `rebuild` your project.

```yaml Sample script
rm -rf ~/Library/Developer/Xcode/DerivedData/
pod deintegrate
pod update
```

> 🚧 The sample script
>
> * Removes **all build cache** from Xcode.
> * Updates **all** pods **across your project**.

***

<Callout icon="💁🏻" theme="default">
  ### Need a hand?

  Go ahead! Ask a question in our [Support Forum](https://sdk.taboola.com/taboolasdk/discuss).

  **Tip**: Provide as much detail as possible, including your platform and SDK version.
</Callout>