Skip to main content
This page contains iOS SDK code examples for User Engagement extensions. For feature documentation, setup instructions, and extension settings, see User Engagement Extensions.

How to Use Extensions with SDK

1

Enable in Dashboard

Login to CometChat Dashboard, select your app, then go to Chat & Messaging → Features and enable the extension.
2

Configure settings (if required)

Some extensions require API keys or additional configuration. Open the extension settings in the Dashboard.
3

Implement SDK methods

Use the code examples below to call extension APIs and extract extension data from messages.
4

Build your UI

Create UI components to display extension data (e.g., polls, stickers, GIFs).

Giphy

Add GIFs from Giphy to your conversations.
CometChat.callExtension(slug: "gifs-giphy", type: .get, endPoint: "v1/trending?offset=10&limit=15", body: nil, onSuccess: { (response) in
        // GIFs data from Giphy
      }) { (error) in
        // Some error occured
      }

Search for GIFs

let query = "awesome"
CometChat.callExtension(slug: "gifs-giphy", type: .get, endPoint: "v1/search?offset=1&limit=15&query=\(query)", body: nil, onSuccess: { (response) in
        // GIFs data from Giphy
      }) { (error) in
        // Some error occured
      }

Tenor

Add GIFs from Tenor to your conversations.
CometChat.callExtension(slug: "gifs-tenor", type: .get, endPoint: "v1/trending?offset=1&limit=15", body: nil, onSuccess: { (response) in
        // GIFs data from Tenor
      }) { (error) in
        // Some error occured
      }

Search for GIFs

let query = "awesome"
CometChat.callExtension(slug: "gifs-tenor", type: .get, endPoint: "v1/search?offset=1&limit=15&query=\(query)", body: nil, onSuccess: { (response) in
        // GIFs data from Tenor
      }) { (error) in
        // Some error occured
      }

Message Translation

Translate messages into 70+ languages.

Translate Message

CometChat.callExtension(slug: "message-translation", type: .post, endPoint: "v2/translate", body: ["msgId": 12 ,"languages": ["hi", "ru"], "text": "Hey there! How are you?"] as [String : Any], onSuccess: { (response) in
         // Result of translations
      }) { (error) in
         // Some error occured
      }

Polls

Create and vote on polls in conversations.

Creating a Poll

CometChat.callExtension(slug: "polls", type: .post, endPoint: "v2/create", body: ["question": "Which OS do you use?" ,"options":["Windows", "Ubuntu", "MacOS", "Other"],"receiver":"cometchat-uid-1","receiverType":"user"] as [String : Any], onSuccess: { (response) in
         // Details about the created poll
      }) { (error) in
         // Error occured
      }

Voting in a Poll

CometChat.callExtension(slug: "polls", type: .post, endPoint: "v2/vote", body: ["vote": "3", "id": "d5441d53-c191-4696-9e92-e4d79da7463"] as [String : Any], onSuccess: { (response) in
         // Vote submitted successfully
      }) { (error) in
         // Error occured
      }

Getting Results

let pollId = "d5441d53-c191-4696-9e92-e4d79da7463"
CometChat.callExtension(slug: "polls", type: .get, endPoint: "v2/results?id=\(pollId)", body: nil, onSuccess: { (response) in
         // Poll results
      }) { (error) in
         // Error occured
      }

Stickers

Load and send stickers in conversations.

Loading Stickers

CometChat.callExtension(slug: "stickers", type: .get, endPoint: "v1/fetch", body: nil, onSuccess: { (response) in
  print("Success",response)
}) { (error) in
  print("Error",error?.errorCode, error?.errorDescription)
}

Stipop

Access Stipop’s sticker platform.
let lang = "en"
let limit = 20
let pageNumber = 1
let countryCode = "US"
CometChat.callExtension(slug: "stickers-stipop", type: .get, endPoint: "v1/trending?lang=\(lang)&limit=\(limit)&pageNumber=\(pageNumber)&countryCode=\(countryCode)", body: nil, onSuccess: { (response) in
        // Stickers in response
      }) { (error) in
        // Some error occured
      }

Search for Stickers

let lang = "en"
let limit = 20
let pageNumber = 1
let query = "happy"
CometChat.callExtension(slug: "stickers-stipop", type: .get, endPoint: "v1/search?lang=\(lang)&limit=\(limit)&pageNumber=\(pageNumber)&query=\(query)", body: nil, onSuccess: { (response) in
        // Stickers in response
      }) { (error) in
        // Some error occured
      }

Reminders

Set reminders for messages or custom events.

Set Message Reminders

CometChat.callExtension(slug: "reminders", type: .post, endPoint: "v1/reminder", body: ["about": 1, "isCustom": false, "timeInMS": 1638351344989] as [String : Any], onSuccess: { (response) in
        // Reminder created successfully
      }) { (error) in
        // Some error occured
      }

Set Personal Reminders

CometChat.callExtension(slug: "reminders", type: .post, endPoint: "v1/reminder", body: ["about": "Drinking water", "isCustom": true, "timeInMS": 1638351344989] as [String : Any], onSuccess: { (response) in
        // Personal reminder created successfully
      }) { (error) in
        // Some error occured
      }

List Reminders

CometChat.callExtension(slug: "reminders", type: .get, endPoint: "v1/fetch", body: nil, onSuccess: { (response) in
        // Reminders list
      }) { (error) in
        // Some error occured
      }

Delete Reminders

CometChat.callExtension(slug: "reminders", type: .delete, endPoint: "v1/reminder", body: ["reminderId": "e9cda52a-3839-4fd5-a010-b70db136f0f1"] as [String : Any], onSuccess: { (response) in
        // Reminder deleted successfully
      }) { (error) in
        // Some error occured
      }