# Introduction

## Overview

Jabber Guest for iOS allows external (public) users to call internal enterprise endpoints and engage in two-way video communications over the public Internet. When configured correctly, the Jabber Guest Web Server allows guests to establish video calls that reach inside the firewall to contact support, experts, and other services from their iOS device. This functionality is enabled through the Jabber Guest Software Development Kit (SDK) for iOS. The Jabber Guest SDK for iOS coordinates and simplifies the implementation, use, and quality of two-way video calls from within your application. This document covers the software and resources a developer would need to use the Jabber Guest SDK to integrate into their iOS mobile applications.

## Audience

This document is intended for developers or information technology professionals using or familiar with Cisco telecommunications equipment who want to integrate with their Jabber Guest Web Server by using a mobile device. The document assumes the reader is comfortable with Objective-C for iOS and common iOS design patterns.

## Terminology

This section covers terminology in use within the SDK and components of the SDK itself.

### Remote View

A Remote View is a view that represents the called party's video during an active call.

### Self View

A Self View is a view that represents the local user's transmitted video during an active call.

### URI

A URI is a Uniform Resource Identifier that is used to identify and potentially pass arguments of the targeted called party.

## Components

For full descriptions and method or properties definitions, refer to the API Reference documentation for more information.

### CJGuestCall

The CJGuestCall class is a singleton that consolidates the lifecycle and interaction with a Jabber Guest call. It represents all of the capabilities and state of the active or pending call. For example, muting and unmuting video is controlled through this class. Getting information such as whether or not video is active or what state the call is in can be accessed through this state through registered notifications.

### CJGuestCallBarView

This view has on-screen controls for the user to modify the state of an active call. These controls include things like Mute, Stop, Keypad, and End Call.

### CJGuestCallKeypadView

A DTMF keypad that can send digits to the targeted called party.

### CJGuestCallSelfView

This view encapsulates the Self View, including the ability to switch cameras and control orientation.

### CJGuestCallViewController

The CJGuestCallViewController class is a packaged collection of visual components working together to give developers a quick and easy way to integrate common Jabber Guest call functionality into their application. It includes a Remote View, Self View, and a Call Bar in a common configuration.

## Strategies for Using Jabber Guest Framework

The framework is designed with flexibility in mind. The framework can be split into three levels.

- The high-level componet is CJGuestCallViewController, which is a view controller built from the mid-level views. It is intended to be used for demo purposes, and is not highly customizable.
- The mid-level components are several views that can be used together to integrate Jabber Guest quickly into your app, and customize it for your needs. These components include the CJGuestCallBarView, CJGuestCallKeypadView, and CJGuestCallSelfView.
- At the lowest level is CJGuestCall, which gives you direct access to the Jabber Guest call object.

Apps should make use of the mid-level views and CJGuestCall to integrate Jabber Guest.