Skip to main content

Project Setup

Install dependencies


To install dependencies into your Xcode project using CocoaPods, specify it in your Podfile:

target 'TargetName' do
# Uncomment the next line if you're using Swift
# use_frameworks!
pod 'P2pEngine-iOS', '= 3.2.0'

Then, run the following command:

$ pod install


Add the dependencies to the Cartfile:

binary "" ~> 3.2.0
binary "" ~> 1.0.211

Then run:

carthage update --use-xcframeworks --cache-builds

This will build each one or download a pre-compiled XCFramework.

On your application targets’ General settings tab, in the Frameworks, Libraries, and Embedded Content section, drag and drop each XCFramework you want to use from the ***Carthage/Build*** folder.

Swift Package Manager

Once you have your Swift package set up, adding Alamofire as a dependency is as easy as adding it to the dependencies value of your Package.swift.

dependencies: [
.package(url: "", branch: "main")


Download Pre-compiled XCFramework

Copy the framework

Unzip files, then drag and drop SwarmCloudKit.xcframework and datachannel_wrapper.xcframework into your Xcode project on your application targets’ General settings tab, in the Frameworks, Libraries, and Embedded Content section.


In order to allow the loading of distributed content via the local proxy, enable loading data from HTTP in your app by opening your info.plist file as source code and adding the following values below:



Import SwarmCloudKit in AppDelegate.m:

import SwarmCloudKit

Initialize P2pEngine

Initialize P2pEngine in AppDelegate.m:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let config = P2pConfig(
trackerZone: .Europe // Set HongKong or USA if you changed zone
P2pEngine.setup(token: YOUR_TOKEN, config: config) // replace with your own token
return true

Where YOUR_TOKEN is your Customer ID. Please replace it by your own token obtained from console, click here for more information.


If the media segment is generated by multiple servers, please add this line to P2pConfig:

config.useStrictHlsSegmentId = true


When initializing an AVPlayer (or any other video player) instance, before passing it a URL, pass that URL through P2P Engine:

let parsedUrl = P2pEngine.shared.parseStreamUrl("https://your_stream.m3u8")
_player = AVPlayer.init(url: URL(string: parsedUrl)!)

That’s it! SDK should now be integrated into your app.


For macOS development:

Xcode enables sandboxing by default on new applications. Ensure your application's entitlements allows incoming and outgoing connections by marking the respective checkboxes in the Network section.


A completed example can be found here

Troubleshooting Steps when P2P doesn't work

Click here