Skip to content

nauphone/iOS-Chat-SDK-Integration-Example

Repository files navigation

Пример встраивания NAUMEN iOS Chat SDK

drawing

Первичная настройка

В зависимости от выбранного способа интеграции, провести следующие действия:

CocoaPods

  1. Необходимо инициализировать CocoaPods в проекте путем выполнения команды pod init
  2. Необходимо добавить в Podfile следующие строки:
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/nauphone/chatpods.git'

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings.delete('CODE_SIGNING_ALLOWED')
    config.build_settings.delete('CODE_SIGNING_REQUIRED')
    config.build_settings['ENABLE_BITCODE'] = 'NO'
  end
end

pod 'ChatSDK', :git => '<link>', :tag => '<version>'

Где:

  • link – ссылка для подключения iOS Chat SDK (предоставляется компанией NAUMEN)
  • version – номер версии iOS Chat SDK
  1. Выполнить команду pod install --repo-update в директории проекта

Swift Package Manager (доступен с версии 23.7.0)

Xcode имеет встроенный менеджер зависимостей Swift Package Manager. Вы можете добавить пакет, выбрав File -> Add Packages Dependencies... и вставив в строку поиска ссылку на репозиторий iOS Chat SDK. Подробнее читайте в документации Apple. Или вы можете добавить следующую зависимость в файл Package.swift:

dependencies: [
    .package(url: "<link>", .upToNextMajor(from: "<version>"))
]

Где:

  • link – ссылка для подключения iOS Chat SDK (предоставляется компанией NAUMEN)
  • version – номер версии iOS Chat SDK

Настройка и инициализация Chat SDK

  1. Необходимо выбрать способ передачи данных авторизации пользователя
  2. Необходимо заполнить пустые параметры NChatSDKService в методе configureChatSDK() в файле AppDelegate.swift

Выбор способа передачи данных авторизации пользователя

Существует три варианта создания данных авторизации (документация):

  • Первый вариант. Авторизация с использованием crmId:
let authData = NChatSDKAuthData(
    crmId: deviceID, // Уникальный идентификатор пользователя
    attributes: attributes // Произвольные параметры
)
  • Второй вариант. Авторизация с использованием генерируемого на стороне SDK JWT-токена (рекомендуемый вариант):
let authData = NChatSDKAuthData(
    crmId: deviceID, // Уникальный идентификатор пользователя
    attributes: attributes, // Произвольные параметры
    privateKey: "<Приватный ключ>" // Приватный ключ для генерации JWT-токена. Документация: https://callcenter.naumen.ru/docs/ru/ncc/web/Content/WebChat/Token_Use.htm
)

Примечание: Используется шифрование RS256. Токен генерируется локально

  • Третий вариант. Авторизация с использованием JWT-токена (рекомендуемый вариант):
let authData = NChatSDKAuthData(
    token: "<JWT-токен>", // Токен необходимо сгенерировать заранее. Документация: https://callcenter.naumen.ru/docs/ru/ncc/web/Content/WebChat/Token_Use.htm
    attributes: attributes // Произвольные параметры
)

Примечание: Данные переданные в JWT-токене являются приоритетными

В зависимости от версии настройка и инициализация Chat SDK могут отличаться:

Инициализация SDK

Необходимо заполнить данные инициализатора NChatSDKService в зависимости от интеграции NCC Chat и настроек витрины чата:

let chatSDKService = NChatSDKService(
    authData: authData, // Данные авторизации пользователя
    showcaseId: , // Идентификатор витрины
    url: , // Адрес сервера ("https://" + <api host>)
    wsUrl: , // Адрес websocket ("wss://" + <websocket host>)
    theme: getTheme(), // Тема для чата
    handler: Handler() // Обработчик событий
)

На что обратить внимание при интеграции

  • В файле ViewController.swift можно увидеть пример встраивания SDK через кастомный контроллер ChatContainer. Важно отметить, что контроллер-контейнер для контроллера чата должен соответствовать протоколу NChatSDKToolbar и включать NavigationBar
  • В качестве примера в проекте присутствует кастомный контейней для контроллера чата ChatContainer, в котором используюется кастомный TitleView ImageTitleView.swift и кнопку с аватаром оператора AvatarButton.swift
  • Стоит обратить внимание на настройку кастомизации в методе getTheme() файла AppDelegate.swift. Кастомизацию можно провести как изменением значений параметров, так и используя конструкторы.

Важно

  • В данном примере показан пример встраивания с использованием собственного контейнера. Дополнительную информацию можно получить в документации)
  • Интерфейс SDK можно широко кастомизировать. Ознакомиться с примерами кастомизации также можно в документации

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages