Start free trial
Table of Content

    Native iOS SDK

    • September 3, 2025
    • 2 mins read

    Table of Content

      REVE Chat’s iOS SDK can be seamlessly integrated with your mobile apps and enable your team deliver in-app messaging to your app users for better engagement and customer support. This documentation shows you how to embed REVE Chat iOS SDK ( latest version 3.0.2.4) in an iOS application and get started in a few minutes.

      Minimum Requirements

      1. Xcode 7 or above
      2. iOS 8 or above

      Installation:

      CocoaPods (recommended)

      # For latest release in cocoapods
      uncomment the line  use_frameworks!
      pod 'ReveChatSDK'

      iOS SDK integration process

      To integrate iOS SDK with your iOS mobile app, please follow the below mentioned steps:

      Update your plist

      The iOS SDK uses the camera and photo library in iOS.

      If your app does not already request permissions for these features, you should update your info.plist file with a usage description for NSPhotoLibraryUsageDescription and NSCameraUsageDescription.

      /* You can do this by adding the following lines in your plist source code */
      /* You can do this by adding the following lines in your plist source code */
      <key>NSPhotoLibraryUsageDescription</key>
      <string><description to use photo library></string>
      <key>NSCameraUsageDescription</key>
      <string><description to use camera></string>
      <key>NSAppTransportSecurity</key>        <dict>
      <key>NSAllowsArbitraryLoads</key>
      <true/></dict>
      <key>NSMicrophoneUsageDescription</key>
      <string><Add your description here></string>

      Import REVE Chat headers

      * Objective c
      #import < ReveChatSDK/ReveChatSDK.h>
      * swift
      import ReveChatSDK

      Setup Account ID

      * Objective c
      [[ReveChatManager sharedManager]
      setupAccountWith:<your account id>];
      * swift
      /* declare object for reve chat manager class*/
      let reveChatManager = ReveChatManager()
      reveChatManager.setupAccount(with: <your account id   as string> )

      Initiate REVE Chat

      * Obj c
      [[ReveChatManager sharedManager]
       initiateReveChatWith:<visitor name>
       visitorEmail:<visitor email>
       visitorMobile:<visitor mobile>
       onNavigationViewController:<your navigation
       controller>];
      * Swift
      /* initiate the class with name, email , mobile and parent controller of the sdk as parameters*/
      reveChatManager.initiateReveChat(with: <visitor name>,
      visitorEmail: <visitor email>,
      visitorMobile: <visitor mobile>,
      onNavigationViewController: <UINavigationController on which you want it to load>)
      *To initiate video call.The audio parameter should be false

      Pass login parameter while initiate ReveChatSDK

      If you don’t want to show the pre-chat form when the visitor is logged in, then pass the info bellow:

      // Some code
      * Obj c
      [[ReveChatManager sharedManager]
                       initiateReveChatWith:<visitor name>
                       visitorEmail:<visitor email>
                       visitorMobile:<visitor mobile>
                       loginState: LOGGED_IN
                       onNavigationViewController:<UINavigationController on which you want it to load>];
      
      
      * Swift
      let reveChatManager = ReveChatManager()
                  reveChatManager.initiateReveChat(with: <visitor name>,
                                                   visitorEmail:<visitor email>,
                                                   visitorMobile: <visitor mobile>,
                                                   loginState: LOGGED_IN,
                                                   onNavigationViewController: <UINavigationController on which you want it to load>)

      If you want to show the pre-chat form when the visitor is logged in, then pass the info bellow:

      // Some code
      * Obj c
      [[ReveChatManager sharedManager]
                       initiateReveChatWith:<visitor name>
                       visitorEmail:<visitor email>
                       visitorMobile:<visitor mobile>
                       loginState: LOGGED_OUT
                       onNavigationViewController:<UINavigationController on which you want it to load>];
      
      
      * Swift
      let reveChatManager = ReveChatManager()
                  reveChatManager.initiateReveChat(with: <visitor name>,
                                                   visitorEmail:<visitor email>,
                                                   visitorMobile: <visitor mobile>,
                                                   loginState: LOGGED_OUT,
                                                  onNavigationViewController: <UINavigationController on which you want it to load>)

      Enable Notification

      You can enable the notification when the app is in background mode. Use the below code:

      * Objective-c
      // In Scenedelegate.h add the following property:
      @property (nonatomic,assign) UIBackgroundTaskIdentifier backgroundUpdateTask;
      
      // In Scenedelegate.m add the following function:
      -(void) endBackgroundUpdateTask {
      [UIApplication.sharedApplication endBackgroundTask:self.backgroundUpdateTask];
      self.backgroundUpdateTask = UIBackgroundTaskInvalid;
      }
      
      // In Scenedelegate.m’s willConnectToSession function add the bellow line:
      self.backgroundUpdateTask = UIBackgroundTaskInvalid;
      
      // In Scenedelegate.m’s sceneDidBecomeActive function add the bellow line:
      [self endBackgroundUpdateTask];
      
      // In Scenedelegate.m’s sceneWillResignActive function add the bellow line:
      self.backgroundUpdateTask = [UIApplication.sharedApplication beginBackgroundTaskWithExpirationHandler:^{
      [self endBackgroundUpdateTask];
      }];
      
      // In Scenedelegate.m’s sceneWillEnterForeground function add the bellow line:
      [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
      
      
      * Swift
      
      var backgroundUpdateTask: UIBackgroundTaskIdentifier = UIBackgroundTaskIdentifier(rawValue: 0)
      
      Method name : “sceneDidBecomeActive” or “applicationDidBecomeActive”
      self.endBackgroundUpdateTask()
      
      Method name “sceneWillResignActive” or “applicationWillResignActive”
      self.backgroundUpdateTask = UIApplication.shared.beginBackgroundTask(expirationHandler: {
      self.endBackgroundUpdateTask()
      })
      
      func endBackgroundUpdateTask() {
      UIApplication.shared.endBackgroundTask(self.backgroundUpdateTask)
      self.backgroundUpdateTask = UIBackgroundTaskIdentifier.invalid
      }
      
      // In applicationDidBecomeActive function
      application.applicationIconBadgeNumber = 0

      Additional changes (optional)

      * Objective c
      /* for title while chatting */
      [ReveChatManager sharedManager].title = @"me talking";
      /* for theme color while chatting */
      [ReveChatManager sharedManager].themeColor = [UIColor blueColor];
      /* for background color */
      [ReveChatManager sharedManager].backgroundColor = [UIColor yellowColor];
      /* for navigation bar color */
      [ReveChatManager sharedManager].navBarColor = [UIColor orangeColor];
      /* for tint color of navigation bar while chatting */
      [ReveChatManager sharedManager].headerTintColor = [UIColor whiteColor];
      /* for title color while chatting */
      [ReveChatManager sharedManager].headerTextColor = [UIColor whiteColor];
      /* for incoming chat bubble color */
      [ReveChatManager sharedManager].incomingBubbleColor = [UIColor blueColor];
      /* for outgoing chat bubble color */
      [ReveChatManager sharedManager].outgoingBubbleColor = [UIColor blueColor];
      * Swift
      /* for title while chatting */
      reveChatManager.setChatTitle("Lets chat")
      /* for theme color while chatting*/
      reveChatManager.themeColor = UIColor.blue
      /* for background color*/
      reveChatManager.backgroundColor = UIColor.yellow
      /* for navigation bar color*/
      reveChatManager.navBarColor = UIColor.gray
      /* for tint color of header */
      reveChatManager.headerTintColor = UIColor.red
      /* for title color while chatting*/
      reveChatManager.headerTextColor = UIColor.black
      /* for incoming chat bubble color*/
      reveChatManager.incomingBubbleColor = UIColor.blue
      /* for outgoing chat bubble color*/
      reveChatManager.outgoingBubbleColor = UIColor.yellow

      FAQs (General Queries while Integrating)

      I am facing the following error in console

      ld: library not found for -lAFNetworking
      Reason : in your pod file use_frameworks! line is commented.
      Solution : Uncomment use_frameworks! line and build again

      Getting Crash when initiating REVE Chat SDK

      Reason : the pod has been updated on the cocoa pods
      solution : run ‘pod update‘ in the terminal on your project path

      Git Link: https://github.com/revechatofficial/iOSREVEChatSDKTest

      AUTHOR’S BIO

      Rahat Hassan is a strategic Product Marketing Manager at REVE Chat specializing in customer experience & communication. He is passionate about creating compelling content for diverse audiences. Beyond work, he enjoys reading articles and watching videos on trending technological shifts ...

      0:00 / 0:00