Tools selection guide - Bandyer/Bandyer-iOS-SDK GitHub Wiki

The Kaleyra Video allows you to selectively enable or disable some of the call tools it provides. This guide is meant for clients of the 3.0 version, if you are using a 2.x version take a look at this guide instead.

Table of contents

Overview

Starting from the 3.0 version the Kaleyra Video SDK collaborative tools are disabled by default. You are required to opt-in for any collaborative tool you want to use in your app. Collaborative tools can be enabled during SDK configuration using the builders provided. In the next chapter we are going to show you how to enable each tool and the configuration options they require.

Screen sharing tools

The Kaleyra Video SDK provides two different tools for sharing your screen contents during a VoIP call. The first one is the in-app screen sharing tool, it enables sharing the contents of your app's main window only, it does not share the contents of the user's device screen, nor it can share the contents of your app while the app is in background. The second one is the broadcast screen sharing tool it is capable of sharing the contents of the user's device screen, it is not limited to sharing the contents of your app and it is capable of sharing the user's device screen contents even if your app is in background. To get more information on this tools you can checkout this dedicated guide.

In-app screen sharing

In order to opt-in for the in-app screen sharing tool, you must enable it while configuring the SDK. By default the tool is disabled. The following code snippets will show you how you enable this tool in your app:

import Bandyer

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        let config = try! ConfigBuilder(appID: "my app id", environment: .production, region: .europe)
                                      .tools { tools in
                                               tools.inAppScreenSharing()
                                      }
                                      .build()
        BandyerSDK.instance.configure(config)

        return true
    }
}
#import "AppDelegate.h"

#import <Bandyer/Bandyer.h>

@interface AppDelegate ()
@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    BDKConfig *config = BDKConfigBuilder.create(@"My app id", BDKEnvironmentSandbox, BDKRegionIndia)
                                        .tools(^(BDKToolsConfigurationBuilder *tools){
                                              tools.inAppScreensharing()
                                        })
                                        .build()
    [BandyerSDK.instance configure:config];

    return YES;
}

@end

Broadcast screen sharing

The broadcast screen sharing tool requires a broadcast upload extension embedded in your app. That extension and the Kaleyra Video SDK need to talk to each other in order to stream the contents of the user's device screen during a video call. While enabling the broadcast screen sharing you must provide the app group identifier used by both ends to exchange the information they need. If you haven't already, we strongly suggest you to take a look at our screensharing guide that will explain in much detail how to setup the broadcast upload extension and its purpose. In order to opt-in for the broadcast screen sharing tool, you must enable it while configuring the SDK. By default the tool is disabled. The following code snippets will show you how you enable this tool in your app:

import Bandyer

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        let config = try! ConfigBuilder(appID: "my app id", environment: .production, region: .europe)
                                      .tools { tools in
                                               tools.broadcastScreenSharing(appGroupIdentifier: "group.com.acme.Acme",
                                              broadcastExtensionBundleIdentifier: "com.acme.Acme.BroadcastExtension")
                                      }
                                      .build()
        BandyerSDK.instance.configure(config)

        return true
    }
}
#import "AppDelegate.h"

#import <Bandyer/Bandyer.h>

@interface AppDelegate ()
@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    BDKConfig *config = BDKConfigBuilder.create(@"My app id", BDKEnvironmentSandbox, BDKRegionIndia)
                                        .tools(^(BDKToolsConfigurationBuilder *tools){
                                              tools.broadcastScreensharing(@"group.com.acme.Acme", @"com.acme.Acme.BroadcastExtension")
                                        })
                                        .build()
    [BandyerSDK.instance configure:config];

    return YES;
}

@end

Whiteboard

In order to opt-in for the whiteboard tool, you must enable it while configuring the SDK. By default the tool is disabled. The following code snippets will show you how you enable this tool in your app:

import Bandyer

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        let config = try! ConfigBuilder(appID: "my app id", environment: .production, region: .europe)
                                      .tools { tools in
                                               tools.whiteboard(uploadEnabled: true)
                                      }
                                      .build()
        BandyerSDK.instance.configure(config)

        return true
    }
}
#import "AppDelegate.h"

#import <Bandyer/Bandyer.h>

@interface AppDelegate ()
@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    BDKConfig *config = BDKConfigBuilder.create(@"My app id", BDKEnvironmentSandbox, BDKRegionIndia)
                                        .tools(^(BDKToolsConfigurationBuilder *tools){
                                              tools.whiteboard()
                                        })
                                        .build()
    [BandyerSDK.instance configure:config];

    return YES;
}

@end

The whiteboard tool can also be enabled disabling its upload tool. When the upload tool is disabled, the user cannot upload images or files in the whiteboard. The following code snippets will show you how you can enable the whiteboard tool but disable the upload tool:

import Bandyer

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        let config = try! ConfigBuilder(appID: "my app id", environment: .production, region: .europe)
                                      .tools { tools in
                                               tools.whiteboard(uploadEnabled: false)
                                      }
                                      .build()
        BandyerSDK.instance.configure(config)

        return true
    }
}
#import "AppDelegate.h"

#import <Bandyer/Bandyer.h>

@interface AppDelegate ()
@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    BDKConfig *config = BDKConfigBuilder.create(@"My app id", BDKEnvironmentSandbox, BDKRegionIndia)
                                        .tools(^(BDKToolsConfigurationBuilder *tools){
                                              tools.whiteboardWithUploadDisabled()
                                        })
                                        .build()
    [BandyerSDK.instance configure:config];

    return YES;
}

@end

Filesharing

In order to opt-in for the filesharing tool, you must enable it while configuring the SDK. By default the tool is disabled. The following snippets of code will show you how you can enable this tool in your app:

import Bandyer

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        let config = try! ConfigBuilder(appID: "my app id", environment: .production, region: .europe)
                                      .tools { tools in
                                               tools.fileshare()
                                      }
                                      .build()
        BandyerSDK.instance.configure(config)

        return true
    }
}
#import "AppDelegate.h"

#import <Bandyer/Bandyer.h>

@interface AppDelegate ()
@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    BDKConfig *config = BDKConfigBuilder.create(@"My app id", BDKEnvironmentSandbox, BDKRegionIndia)
                                        .tools(^(BDKToolsConfigurationBuilder *tools){
                                              tools.fileshare()
                                        })
                                        .build()
    [BandyerSDK.instance configure:config];

    return YES;
}

@end

Chat

In order to opt-in for the chat tool, you must enable it while configuring the SDK. By default the tool is disabled. The following snippets of code will show you how you can enable this tool in your app:

import Bandyer

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        let config = try! ConfigBuilder(appID: "my app id", environment: .production, region: .europe)
                                      .tools { tools in
                                               tools.chat()
                                      }
                                      .build()
        BandyerSDK.instance.configure(config)

        return true
    }
}
#import "AppDelegate.h"

#import <Bandyer/Bandyer.h>

@interface AppDelegate ()
@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    BDKConfig *config = BDKConfigBuilder.create(@"My app id", BDKEnvironmentSandbox, BDKRegionIndia)
                                        .tools(^(BDKToolsConfigurationBuilder *tools){
                                              tools.chat()
                                        })
                                        .build()
    [BandyerSDK.instance configure:config];

    return YES;
}

@end