# Технические требования и установка
# 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 требуется изменить несколько файлов в проекте:
- В файле настроек
.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
:
- Добавьте следующие возможности (opens new window) для вашего приложения:
<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"/>
- Добавить следующие разрешения (opens new window):
<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:
Правой клавишей мыши кликните по названию проекта.
Выберите пункт Add → NuGet packages.
В открывшемся окне в выпадающем списке перечня источников пакетов выберите пункт Configure Sources....
В настройках источников пакетов нажмите кнопку Add.
В модальном окне добавления источника в пункте Location выберите директорию, которая содержит файл
TrueConfSDK.[version].nupkg
. Укажите название источника (например Mobile SDK), затем нажмите Add Source.Закройте настройки источников пакетов чтобы вернуться в окно добавления пакета.
В выпадающем списке источников пакетов в окне добавления пакета выберите добавленный источник (например Mobile SDK) - в списке отобразится один пакет TrueConfSDK.
Выберите пакет TrueConfSDK и нажмите Add Package.
Основные объекты:
ITrueConfSDK
- общий интерфейс;TrueConfAndroidSDKImpl
- реализация интерфейсаITrueConfSDK
для Android;TrueConfIOSSDKImpl
- реализация интерфейсаITrueConfSDK
для iOS.
# Дополнительные шаги для Android
Добавьте в манифест все необходимые для работы SDK разрешения и возможности (см. пункт 3 раздела Android).
Подключите дополнительные 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.gradle
(в Project: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);
...