IceLink three Getting Commenced Guide
Documentation
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 Ten, 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 numerous 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 switch 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 Talk.WebSync4 example shows off the core SDK functionality. It is a talk application that demonstrates the use of audio and movie flows to establish a movie conference and also the use of data flows to send text messages inbetween participants. There is a public version of this example hosted at https://demo.frozenmountain.com, if you'd choose to attempt it there very 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 movie data through an intermediate server and is designed to avoid limitary 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 permits you to adjust how the layout of a movie 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 commencing point for your application. WebRTC technologies can be fickle, and it's best to embark from a working base than to attempt to debug an application that has never worked decently. Once you have an example up and running, you can begin to exchange 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 inbetween platforms. To establish a cross-platform session yourself, spin up the Android or iOS example in your IDE, and open https://demo.frozenmountain.com in your web browser. Inject 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.
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 Talk.WebSync4.sln).
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 geyser 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 Nineteen, or Four.Four (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. Unluckily, at this feature is not presently 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 seven and XCode 8. You should not use earlier versions of XCode. However the SDK is in Objective-C only, there are examples for both Objective-C and Swift. The Swift examples are written with Swift three 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 commence a fresh project.
Wrapping Up
You've downloaded the SDK and run some of the demos. Now, it's time to get commenced on building your own application. If you're beginning with an empty project make sure you read the Beginning a Fresh Project section, as some platforms have a few extra requirements. If you're going to embark by tweaking one of our examples, you can skip ahead to Specifying Your License Key.
IceLink three Getting Began Guide
Documentation
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 Ten, 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 numerous 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 switch 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 Talk.WebSync4 example shows off the core SDK functionality. It is a talk application that demonstrates the use of audio and movie rivulets to establish a movie conference and also the use of data rivulets to send text messages inbetween participants. There is a public version of this example hosted at https://demo.frozenmountain.com, if you'd choose to attempt it there very 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 movie data through an intermediate server and is designed to avoid limitary 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 permits you to adjust how the layout of a movie 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 kicking off point for your application. WebRTC technologies can be fickle, and it's best to begin from a working base than to attempt to debug an application that has never worked decently. Once you have an example up and running, you can begin to exchange 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 inbetween platforms. To establish a cross-platform session yourself, spin up the Android or iOS example in your IDE, and open https://demo.frozenmountain.com in your web browser. Come in 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.
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 Talk.WebSync4.sln).
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 explosion 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 Nineteen, or Four.Four (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. Unluckily, at this feature is not presently 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 seven and XCode 8. You should not use earlier versions of XCode. However the SDK is in Objective-C only, there are examples for both Objective-C and Swift. The Swift examples are written with Swift three 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 commence a fresh project.
Wrapping Up
You've downloaded the SDK and run some of the demos. Now, it's time to get began on building your own application. If you're beginning with an empty project make sure you read the Embarking a Fresh Project section, as some platforms have a few extra requirements. If you're going to begin by tweaking one of our examples, you can skip ahead to Specifying Your License Key.