Downloading IceLink

IceLink provides SDKs for all modern platforms, with libraries written in C#, JavaScript, Java and Objective-C. We support Android, iOS, MacOS, almost any flavour of .NET, Windows Phone, Windows 10, Xamarin and a few others minor platforms. A demo is available online at https://demo.frozenmountain.com.

Getting the SDK

The IceLink SDK is available on multiple platforms. For convenience's sake, these are bundled together in a single download. At some point in the future, we plan to make the binaries available on popular package managers like Maven and NuGet, but for now you can download the SDK from our Downloads page.

What's in the Download?

Open the SDK archive, and you will see a list of folders, each named after a specific platform. Open the folder for your platform, and you should see both an Examples folder and a Libraries folder. There are no surprises here - the Examples folder contains source code for demos that you can build and the Libraries folder contains compiled binaries for the platform.

In the root of the archive, you can inspect the change log or a the general README file, which contains information on how to use the SDK.

Building an Example

Each platform has several examples. Each example demonstrates a specific functionality of the SDK.

The Chat.WebSync4 example shows off the core SDK functionality. It is a chat application that demonstrates the use of audio and video streams to establish a video conference and also the use of data streams to send text messages between participants. There is a public version of this example hosted at https://v3.icelink.fm, if you'd prefer to try it there first.

The Server example demonstrates the use of the IceLink TURN server. For those not familiar with the term, TURN is a protocol for relaying audio and video data through an intermediate server and is designed to avoid restrictive firewalls. This example is only available on platforms that are suitable to run a TURN server on.

The last example, LayoutManager shows how to use the functionality of the FM.IceLink.LayoutManager class. This component allows you to adjust how the layout of a video conference looks. You can read more about the layout manager in the Customizing the Layout Manager guide.

Recommended Use

If you have not worked with IceLink before, you should use these examples as a starting point for your application. WebRTC technologies can be fickle, and it's best to start from a working base than to try to debug an application that has never worked properly. Once you have an example up and running, you can begin to swap out code and components as necessary. If nothing else, you can use these examples to prototype your application and get a feel for the SDK.

These examples are fully interoperable between platforms. To establish a cross-platform session yourself, spin up the Android or iOS example in your IDE, and open https://v3.icelink.fm in your web browser. Enter the same session id in both applications and they will connect to each other.

License Keys

Each example in the SDK has an icelink.key file in the root of the project folder. In order to run the application, you must populate that file with a license key. Simply copy paste your key from https://www.frozenmountain.com/downloads#icelink and the app will take care of the rest for you. Refer to the section on Configuring Your License Key for more information.

Platform-Specific Instructions

These examples come with a few platform-specific caveats, which are covered here.

.NET

The .NET examples were created using Visual Studio 2015. You should not run them with older versions of Visual Studio. To run a .NET example, open the solution file that matches the name of the example, (ie: Server.sln or Chat.WebSync4.sln).

Java

The Java examples were created with IntelliJ. They require version 1.8.0_102 or later of the JDK. Due to a known issue with MacOS Sierra that can cause instability issues, you should not use earlier versions of the JDK. When you load the examples, make sure that you open the example folder with IntelliJ, do not import it.

Android

The Android examples were created with Android Studio. Your Android API level must be at least 19, or 4.4 (KITKAT). Similar to the Java examples, open the example folder in the IDE. Do not import it.

There is a known issue with echo cancellation on x86 devices. Unfortunately, at this feature is not currently available.

JavaScript

The JavaScript APIs are generated from TypeScript, using version 1.8 of the TypeScript compiler. If you are using Visual Studio, you can open the directory of an example as a Web Site and run it without any further configuration. If you are using another web server to test, simply map an example's directory to a path on your server.

iOS/Cocoa

The Cocoa examples have been tested with XCode 7 and XCode 8. You should not use earlier versions of XCode. Though the SDK is in Objective-C only, there are examples for both Objective-C and Swift. The Swift examples are written with Swift 3 and use an Objective-C bridging header to access the SDK classes.

If you have linker errors, make sure that you have the -ObjC and -all_load linker flags set.

Xamarin iOS

Most C# targets use JIT (Just in time) compilation. However, because this is not permitted on iOS, Xamarin iOS must use AOT (Ahead of time) compilation. When AOT is used, ALL symbols must be available at compilation time. This includes native libraries. If any of these are missing, there will be linker errors. This can be confusing for many developers, because the same application will compile fine when built for the iOS simulator, because the simulator still uses JIT compilation.

Our demos take care of this detail, but be aware of it if you start a new project.

Wrapping Up

You've downloaded the SDK and run some of the demos. Now, it's time to get started on building your own application. If you're starting with an empty project make sure you read the Starting a New Project section, as some platforms have a few additional requirements. If you're going to start by tweaking one of our examples, you can skip ahead to Specifying Your License Key.