# Технические требования и установка

# xCode – разработка под iOS

Вам потребуется Xcode версии 12 или новее. Поддерживаемые версии iOS – 13 и новее. Для продолжения работы видеоконференции, когда ваше приложение уходит в фон, необходимо в настройках приложения включить соответствующие Background Modes. В файле info.plist должны быть такие ключи:

<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
    <string>voip</string>
</array>

Для правильной работы приложения с камерой и микрофоном добавьте в файл info.plist следующие строки:

<key>NSCameraUsageDescription</key>
<string>To allow other people to see you</string>
<key>NSMicrophoneUsageDescription</key>
<string>To allow other people to hear you</string>

Для использования SDK нужно добавить в ваш проект файл TrueConfSDK.xcframework.

Далее обязательно убедитесь, что TrueConfSDK.xcframework прописался ва вашей IDE по пути: Targets → Project-Name → General → Frameworks, Libraries and Embedded Content где Project-Name – ваш проект.

Подключение SDK к классам Objective-C проекта производится следующими строками:

#import "TrueConfSDK/TrueConf.h"
#import "TrueConfSDK/TrueConfSDK.h"

Для Swift проектов достаточно прописать строку:

import TrueConfSDK

Framework поддерживает архитектуру arm64 для iOS устройств, а также x86_64 и arm64 для симуляторов.

# Android Studio

Проект создан для использования в среде разработки AndroidStudio. Поддерживаемая версия Android – не ниже API 24 (Android 7.0), targetSdk и compileSdk – API 34 (Android 14.0). Библиотеки собраны при использовании Java 17.

Для подключения SDK требуется изменить несколько файлов в проекте:

  1. В файле настроек .gradle (подробнее о нём в официальной документации Gradle (opens new window)):
  • В разделе repositories добавьте maven репозиторий. username и password выдаются по запросу через вашего менеджера:
maven {
    credentials {
        username 'username'
        password 'password'
    }
    url 'https://sdk.trueconf.com/maven/repository/maven-public/'
}
  • В разделе dependencies подключите библиотеки SDK нужной версии, например:
api 'com.trueconf:trueconfsdk:3.0.0.34@aar'
api 'com.trueconf:media:3.0.0.34@aar'
api 'com.trueconf:jnicore:3.0.0.34@aar'
  • Также в .gradle должны быть прописаны следующие зависимости:
implementation 'androidx.work:work-runtime:2.9.0'
implementation 'androidx.concurrent:concurrent-futures:1.1.0'
implementation 'androidx.core:core:1.12.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation 'androidx.mediarouter:mediarouter:1.7.0'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation 'androidx.leanback:leanback:1.0.0'
implementation 'androidx.leanback:leanback-preference:1.0.0'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.emoji:emoji-bundled:1.1.0'
implementation 'com.google.android.material:material:1.11.0'
implementation 'org.greenrobot:eventbus:3.3.1'

2. Подключите SDK к классам проекта в коде приложения (пример для Java):

import com.trueconf.sdk.TrueConfSDK;// to work with SDK methods
import com.trueconf.sdk.TrueConfListener;    // to work with SDK events

3. В файле манифеста AndroidManifest.xml:

<uses-feature
      android:glEsVersion="0x00020000"
      android:required="true"/>
  <uses-feature
      android:name="android.hardware.audio.low_latency"
      android:required="false"/>
  <uses-feature
      android:name="android.hardware.camera"
      android:required="false"/>
  <uses-feature
      android:name="android.hardware.camera.autofocus"
      android:required="false"/>
  <uses-feature
      android:name="android.hardware.camera.flash"
      android:required="false"/>
  <uses-feature
      android:name="android.hardware.camera.front"
      android:required="false"/>
  <uses-feature
      android:name="android.hardware.microphone"
      android:required="false"/>
  <uses-feature
      android:name="android.hardware.sensor.accelerometer"
      android:required="false"/>
  <uses-feature
      android:name="android.hardware.sensor.light"
      android:required="false"/>
  <uses-feature
      android:name="android.hardware.sensor.proximity"
      android:required="false"/>
  <uses-feature
      android:name="android.hardware.touchscreen"
      android:required="false"/>
  <uses-feature
      android:name="android.hardware.wifi"
      android:required="false"/>
  <uses-feature
      android:name="android.hardware.bluetooth"
      android:required="false"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  • Для повышения безопасности сетевых соединений рекомендуется запретить использование незащищённого HTTP протокола. Для этого в директории проекта res создайте файл network_security_config.xml с таким содержимым:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="false">
    <trust-anchors>
        <certificates src="system" />
    </trust-anchors>
</base-config>
</network-security-config>

После чего подключите этот xml в манифест AndroidManifest.xml. Для этого добавьте в секции application ссылку на созданный файл:

<application
        android:networkSecurityConfig="@xml/network_security_config"
        ... >
</application>

# .NET

Для данного фреймворка TrueConf Mobile SDK упакован в NuGet пакет, который можно подключить с помощью менеджера пакетов в Visual Studio. Пакет содержит реализацию для обеих платформ Android и iOS, а также общий интерфейс для кроссплатформенной разработки. Библиотеки собраны на базе .NET 8 (net8.0-android и net8.0-ios). В качестве примеров используются кроссплатформенные приложения MAUI.

Минимальная поддерживаемая версия Android - 7.0 (API 24), iOS - 13.0.

Для начала работы с TrueConf Mobile SDK необходимо выполнить установку NuGet пакета с SDK:

  1. Правой клавишей мыши кликните по названию проекта.

  2. Выберите пункт Add → NuGet packages.

  3. В открывшемся окне в выпадающем списке перечня источников пакетов выберите пункт Configure Sources....

  4. В настройках источников пакетов нажмите кнопку Add.

  5. В модальном окне добавления источника в пункте Location выберите директорию, которая содержит файл TrueConfSDK.[version].nupkg. Укажите название источника (например Mobile SDK), затем нажмите Add Source.

  6. Закройте настройки источников пакетов чтобы вернуться в окно добавления пакета.

  7. В выпадающем списке источников пакетов в окне добавления пакета выберите добавленный источник (например Mobile SDK) - в списке отобразится один пакет TrueConfSDK.

  8. Выберите пакет TrueConfSDK и нажмите Add Package.

Основные объекты:

  • ITrueConfSDK - общий интерфейс;

  • TrueConfAndroidSDKImpl - реализация интерфейса ITrueConfSDK для Android;

  • TrueConfIOSSDKImpl - реализация интерфейса ITrueConfSDK для iOS.

# Дополнительные шаги для Android

  1. Добавьте в манифест все необходимые для работы SDK разрешения и возможности (см. пункт 3 раздела Android).

  2. Подключите дополнительные NuGet пакеты:

<PackageReference Include="Xamarin.AndroidX.MediaRouter" Version="1.7.0.4" />
<PackageReference Include="Xamarin.AndroidX.GridLayout" Version="1.0.0.27" />
<PackageReference Include="Xamarin.AndroidX.Leanback.Preference" Version="1.0.0.27" />
<PackageReference Include="Xamarin.AndroidX.Work.Runtime" Version="2.9.0.5" />
<PackageReference Include="Xamarin.AndroidX.Emoji.Bundled" Version="1.1.0.22" />
<PackageReference Include="Xamarin.AndroidX.MultiDex" Version="2.0.1.27" />

3. Добавьте файл обфускатора ProGuard (opens new window) с таким содержимым:

-dontwarn android.content.**
-dontwarn android.app.**
-dontwarn android.hardware.camera2.**
-dontwarn android.util.**
-dontwarn android.provider.**

-keep class androidx.appcompat.** { *; }
-keep class androidx.startup.InitializationProvider
-keep class com.microsoft.maui.** { *; }
-keep class com.trueconf.sdk.** { *; }

# Дополнительные шаги для iOS

В iOS в файл Info.plist необходимо добавить “Privacy - Camera Usage Description” и “Privacy - Microphone Usage Description” c текстом, который будет отображаться при запросе разрешения использования оборудования.

# Соответствие функций и событий для .NET

Описание функций и событий находится в основной документации к SDK, однако их названия отличаются:

Функции События
iOS, Android .NET iOS, Android .NET
stop Stop onServerStatus OnServerStatusEvent
stop Stop onServerStatus OnServerStatusEvent
loginAs LoginAs onLogin OnLoginEvent
logout Logout onLogout OnLogoutEvent
callTo CallTo onStateChanged OnStateChangedEvent
joinConf JoinConf onConferenceStart OnConferenceStartEvent
hangup Hangup onConferenceEnd OnConferenceEndEvent
acceptCall AcceptCall onInvite OnInviteEvent
parseProtocolLink ParseProtocolLink onAccept OnAcceptEvent
scheduleLoginAs ScheduleLoginAs onReject OnRejectEvent
muteMicrophone MuteMicrophone microphoneMuted MicrophoneMuted
muteCamera MuteCamera cameraMuted CameraMuted
getMyId GetMyId onRejectTimeOut OnRejectTimeOutEvent
getMyName GetMyName onUserStatusUpdate OnUserStatusUpdateEvent
isConnectedToServer IsConnectedToServer onChatMessageReceived OnChatMessageReceivedEvent
isLoggedIn IsLoggedIn onRecordRequest OnRecordRequestEvent
isInConference IsInConference
getUserStatus GetUserStatus
acceptRecord AcceptRecord
sendChatMessage SendChatMessage

# Cordova

Для данного фреймворка TrueConf Mobile SDK упакован в Cordova плагин. Минимальная поддерживаемая версия Android - 7.0 (API 24), iOS - 13.0.

Для начала работы создайте проект Cordova, выполнив команду:

cordova create DIRECTORY_NAME PROJECT_PACKAGE DISPLAYED_PROJECT_NAME

Затем перейдите в созданную папку и добавьте плагин TrueConf Mobile SDK командой:

cordova plugin add PATH_TO_TRUECONF_PLUGIN

Никаких дополнительных действий для начала использования TrueConf Mobile SDK не требуется. После добавления плагина в проект можно получить экземпляр SDK в js:

let sdkBuilder = cordova.require('trueconf-sdk-plugin.sdk');
  sdkBuilder.getInstance("qa.trueconf.net").then(instance => {
      sdk = instance; // save the SDK instance for further use
  }, error => {
      console.log(error);
  });

А затем подписаться и обработать событие onStart:

sdk.addEventListener(“onStart”, (event) => {
	  // now you can use the SDK
  });

После этого уже можно получать события и работать с плагином SDK для Cordova.

Статическая функция получения экземпляра TrueConf Mobile SDK:

(static) getInstance(){Promise.<TrueConfSDK>}

Возвращает:

// A promise to be called after starting SDK, it gets the SDK instance.
Type - Promise.<TrueConfSDK>

Событие, означающие возможность начала работы с TrueConf Mobile SDK:

onStart

Содержит параметры:

Имя Тип Описание
connected boolean Статус подключения
serverName string Имя сервера или IP, undefined - при отсутствии коннекта
loggedIn boolean Статус авторизации
userID string TrueConf ID, пустой если не авторизован

# Дополнительные шаги для Android

В build.gradle в разделе repositories добавьте maven репозиторий, в котором находятся библиотеки Android SDK (как для Android Studio). username и password выдаются по запросу через вашего менеджера.

maven {
    credentials {
        username 'username'
        password 'password'
    }
    url 'https://sdk.trueconf.com/maven/repository/maven-public/'
}

До инициализации SDK (до вызова метода start) вызовите следующие методы:

  • registerApp – в него нужно передать Application (или его наследника, который используется в проекте);

  • setFallbackActivity – в него нужно передать класс Activity, к которому следует возвращаться в случае завершения звонка.

Это можно сделать, к примеру, в классе MainActivity в onCreate:

public class MainActivity extends CordovaActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate();
        TrueConfSDK.getInstance().registerApp(getApplication());
        TrueConfSDK.getInstance().setFallbackActivity(MainActivity.class);
    	  ...

# React Native

Для данного фреймворка TrueConf Mobile SDK упакован в npm пакет, который можно добавить в проект с помощью npm или yarn.

Минимальная поддерживаемая версия Android - 7.0 (API 24), iOS - 13.0.

Для создания проекта выполните команду:

npx react-native init PROJECT_NAME

После добавьте модуль SDK с помощью npm или yarn:

npm install PATH_TO_TRUECONF_MODULE --install-links=true

или

yarn add PATH_TO_TRUECONF_MODULE

# Дополнительные шаги для iOS

Для подключения модуля SDK через CocoaPods из папки проекта выполните команду:

cd ios && pod install && cd ..

Добавьте в Info.plist разрешения на использование камеры и микрофона непосредственно в Xcode проекте, либо выполнив следующие команды из папки проекта:

cd ios/PROJECT_NAME
plutil -insert NSCameraUsageDescription -string '' Info.plist
plutil -insert NSMicrophoneUsageDescription -string '' Info.plist

# Дополнительные шаги для Android

В build.gradleProject:Example) для всех проектов в разделе repositories добавьте maven репозиторий, в котором находятся библиотеки Android SDK (как для Android Studio). username и password выдаются по запросу через вашего менеджера.

maven {
    credentials {
        username 'username'
        password 'password'
    }
    url 'https://sdk.trueconf.com/maven/repository/maven-public/'
}

До инициализации SDK (до вызова метода start) необходимо вызвать следующие методы:

  • registerApp - в него нужно передать Application (или его наследника, который используется в проекте);

  • setFallbackActivity - в него нужно передать класс Activity, к которому следует возвращаться в случае завершения звонка.

Это можно сделать, к примеру, в классе MainApplication в onCreate:

public class MainApplication extends Application implements ReactApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        TrueConfSDK.getInstance().registerApp(this);
        TrueConfSDK.getInstance().setFallbackActivity(MainActivity.class);
    	  ...
Обновлено: 14.01.2025