Get Started

Before you get started: Make sure you have created a channel in OneTalk dashboard and obtain the APP_KEY_SECRET.

Configure and Initialize Omnichannel iOS SDK

Step 1: Install Omnichannel iOS SDK

  1. You can install the Omnichannel iOS SDK using CocoaPods like the following. If you are new to CocoaPods, you can see more information in Cocoapods guides. To create a Podfile, open a terminal window, navigate to your project directory, and then create a Podfile by running the following command in the terminal:

$ pod init

Then Podfile will be created in your project directory. Open the Podfile and add the following lines to the Podfile.

# Please make sure you define platform on your Podfile
# Make sure to use ios 11.0 for minimum deployment target
platform :ios, '11.0'
target "YourProjectName" do
pod 'TapTalkLive'

Note: Please make sure you implement ios version 11.0platform :ios, '11.0' for minimum deployment target to obtain latest update of SDK

Since use uses git-lfs (Git Large Files Storage) you will need to install GIT LFS to clone/install SDK through Cocoapods.

Note: Make sure to install git-lfsbefore pod install, otherwise the pod install / pod update will be error

Easiest way to install git-lfs is using brew:

brew install git-lfs
git lfs install

Next, after the git-lfs is installed, install the through CocoaPods.

$ pod install

Step 2: Grant permission in your application project

To make sure Omnichannel iOS have all permission to access user's media, file, location, and contact, the application needs to ask for permissions. Go to your info.plist, and add the following key-value pairs.

Information Property Key

Information Property Value

Privacy - Camera Usage Description

$(PRODUCT_NAME) needs to request access to your camera to take profile picture and to send image chat.

Privacy - Contacts Usage Description

$(PRODUCT_NAME) need your permission to access your contact, we will sync your contact to our server and automatically find your friend so it is easier for you to find your friends.

Privacy - Photo Library Additions Usage Description

$(PRODUCT_NAME) needs to request access to your photo library to save photo.

Privacy - Photo Library Usage Description

$(PRODUCT_NAME) needs to request access to your photo library to take profile picture and to send image chat.

Privacy - Location When In Use Usage Description

$(PRODUCT_NAME) needs to request access to your location to send location chat.

Note: You can change Information Property Value based on your own preferences. These values will appear when the application requests permission from the user.

Adding new key in info.plist
Adding new key in info.plist

Step 3: Enable background modes

Background modes is required to handle background process in It is used to run some processes in the background before the app is killed. For more information about the processes, check out the background process section.

To enable background modes, go to Target -> Capabilities, then turn Background Modes toggle to ON, next select Background fetch and Remote notifications

After you turn on the Background Modes, Required background modes key will be added automatically in your Info.plist as shown below.

Step 4: Initialize Omnichannel iOS in your application class

In order to use Omnichannel, you must first initialize an instance by passing the APP_KEY_SECRET and API_BASE_URL assigned to your application to the initWithSecretKey: method as a parameter. Generally, initialization is implemented in the appDelegate application:didFinishLaunchingWithOptions: method.

// Import Omnichannel
#import <TapTalkLive/TapTalkLive.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[TapTalkLive sharedInstance] initWithSecretKey:APP_KEY_SECRET];

Parameters APP_KEY_SECRET: (String) application key Secret

To allow the Omnichannel iOS SDK to respond to the connection and state changes in your iOS client app, you have to implement all of our application delegate methods in your UIApplicationDelegate methods in appDelegate file. You can follow the instructions in Implement Application Delegate page.

Initialize Google Places API Key (Optional)

To enable location search result preview while sending location message, a Google Places API Key is required. To obtain the API key for your application, you can check the documentation provided by Google. To initialize, insert your obtained key using the initializeGooglePlacesApiKey() method.

#import <TapTalkLive/TapTalkLive.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//Initialize Google Places API Key
[[TapTalkLive sharedInstance] initializeGooglePlacesAPIKey:GOOGLE_PLACES_API_KEY];

Parameters GOOGLE_PLACES_API_KEY: (String) Google Places API key

Open Omnichannel View

To open TapTalk Omnichannel's view UI for your application, you can use the presentTapTalkLiveViewWithCurrentNavigationController:animated or pushTapTalkLiveViewWithCurrentNavigationController:animated method from the TapTalkLive class. This will open an activity containing a chat room list for your user, and will open a Create Case Form activity on top if the user is new or do not have any existing case.

Called to show TapTalk Live view with present animation
@param navigationController (UINavigationController *) your current navigation controller
@param animated (BOOL) make the present animated or not
[[TapTalkLive sharedInstance] presentTapTalkLiveViewWithCurrentNavigationController:NAVIGATION_CONTROLLER animated:ANIMATED];
Called to show TapTalk Live view with push animation
@param navigationController (UINavigationController *) your current navigation controller
@param animated (BOOL) make the present animated or not
[[TapTalkLive sharedInstance] pushTapTalkLiveViewWithCurrentNavigationController:NAVIGATION_CONTROLLER animated:ANIMATED];
Obtain main view controller of TapTalk Live
[[TapTalkLive sharedInstance] getTapTalkLiveViewMainController];

Parameters NAVIGATION_CONTROLLER: (UINavigationController) your current active navigation controller ANIMATED: (BOOL) boolean to state animation active or not