Рекомендации: пакеты SDK для вызовов в Службах коммуникации Azure
В этой статье содержатся сведения о рекомендациях, связанных с Службы коммуникации Azure вызовом пакетов SDK.
Рекомендации по Службы коммуникации Azure вызову веб-пакета SDK
В этом разделе содержатся сведения о рекомендациях, связанных с пакетом SDK для вызовов Службы коммуникации Azure (JavaScript) для голосового и видеозвонка.
Подключите микрофон или включите микрофон из диспетчера устройств при выполнении вызова
Если микрофон недоступен в начале вызова Службы коммуникации Azure, а затем микрофон становится доступным, изменение вызывает диагностическое noMicrophoneDevicesEnumerated
событие. Когда это событие происходит, приложению необходимо вызвать askDevicePermission
, чтобы получить согласие пользователя на перечисление устройств. Затем пользователь может отключить или отключить микрофон.
Удаление VideoStreamRendererView
Приложения служб коммуникации должны удаляться VideoStreamRendererView
или его родительский VideoStreamRenderer
экземпляр, если он больше не нужен.
Повесить вызов на событие onbeforeunload
Приложение должно вызывать call.hangup
при возникновении события onbeforeunload
.
Обработка нескольких вызовов на нескольких вкладках
Приложение не должно подключаться к вызовам с нескольких вкладок браузера одновременно на мобильных устройствах. Эта ситуация может привести к неопределенному поведению из-за выделения ресурсов для микрофона и камеры на устройстве. Мы рекомендуем разработчикам всегда повесить звонки, когда они завершены в фоновом режиме, прежде чем начать новый.
Обработка выключения звонка ОС при вызове телефонного звонка
При вызове Службы коммуникации Azure (для iOS и Android), если телефонный звонок входит или голосовой помощник активируется, ОС автоматически отключает микрофон и камеру пользователя. В Android звонок автоматически отменяет и перезапуск видео после завершения телефонного звонка. В iOS отмена и перезапуск видео требуют действия пользователя.
Вы можете использовать событие microphoneMuteUnexpectedly
качества для прослушивания уведомления о неожиданном отключении микрофона. Помните, что для правильного подключения к вызову необходимо использовать пакет SDK 1.2.3-beta.1 или более поздней версии.
const latestMediaDiagnostic = call.api(SDK.Features.Diagnostics).media.getLatest();
const isIosSafari = (getOS() === OSName.ios) && (getPlatformName() === BrowserName.safari);
if (isIosSafari && latestMediaDiagnostic.microphoneMuteUnexpectedly && latestMediaDiagnostic.microphoneMuteUnexpectedly.value) {
// received a QualityEvent on iOS that the microphone was unexpectedly muted - notify user to unmute their microphone and to start their video stream
}
Приложение должно вызываться call.startVideo(localVideoStream);
для запуска видеопотока и должно использовать this.currentCall.unmute();
для отмены звука.
Управление устройствами
Пакет SDK Службы коммуникации Azure можно использовать для управления операциями с устройствами и мультимедиа.
Приложение не должно использовать собственные API браузера, такие как getUserMedia
или getDisplayMedia
получать потоки за пределами пакета SDK. При этом необходимо вручную удалить потоки мультимедиа перед использованием DeviceManager
или другими API управления устройствами с помощью пакета SDK служб коммуникации.
Запрос разрешений устройства
Вы можете запросить разрешения устройства с помощью пакета SDK. Приложение должно использовать DeviceManager.askDevicePermission
для запроса доступа к аудио- и видеоустройствам.
Если пользователь запрещает доступ, DeviceManager.askDevicePermission
возвращается false
для определенного типа устройства (аудио или видео) при последующих вызовах, даже после обновления страницы. В этом сценарии приложение должно:
- Определите, что пользователь ранее отказался от доступа.
- Укажите пользователю вручную сбрасывать или явно предоставлять доступ к конкретному типу устройства.
Управление поведением камеры, используемой другим процессом
В Windows Chrome и Windows Microsoft Edge: если вы начинаете, присоединяетесь или принимаете звонок с видео, а другой процесс (кроме браузера, на котором работает веб-пакет SDK) использует устройство камеры, вызов запускается только с аудио и видео.
cameraStartFailed
Возникает флаг диагностики для пользователей, так как камера не смогла запуститься.Такая же ситуация относится к включению видео середины звонка. Вы можете отключить камеру в другом процессе, чтобы этот процесс выпускал устройство камеры, а затем снова начать видео из звонка. Затем видео включается для вызова, а удаленные участники начинают видеть видео.
Эта проблема не существует в macOS Chrome или macOS Safari, так как ОС позволяет обрабатывать и потоки совместно использовать устройство камеры.
На мобильных устройствах: если ProcessA запрашивает устройство камеры во время использования ProcessB , то ProcessA обнадит устройство камеры и ProcessB остановит его использование.
В iOS Safari: камера не может быть включена для нескольких клиентов звонков на одной вкладке или на разных вкладках. Когда любой клиент вызова использует камеру, он перегоняет камеру из любого предыдущего клиента вызова, который использовал его. Предыдущий
cameraStoppedUnexpectedly
клиент вызова получает флаг диагностики для пользователя.
Управление общим доступом к экранам
Закрытие приложения не останавливает общий доступ к нему
Предположим, что из Chromium вы можете поделиться приложением Microsoft Teams. Затем нажмите кнопку X в приложении Teams, чтобы закрыть его. Хотя окно закрыто, приложение Teams продолжает работать в фоновом режиме. Значок по-прежнему отображается на панели задач рабочего стола. Так как приложение Teams по-прежнему работает, он по-прежнему предоставляется доступ к экрану с удаленными участниками.
Чтобы остановить общий доступ к приложению, необходимо выполнить одно из следующих действий:
- Щелкните правой кнопкой мыши значок приложения на панели задач на рабочем столе и нажмите кнопку "Выйти".
- Нажмите кнопку "Остановить общий доступ " в браузере.
- Вызовите операцию API пакета SDK
Call.stopScreenSharing()
.
Safari может выполнять только полноэкранный общий доступ
Safari разрешает общий доступ к экранам только для всего экрана. Это поведение отличается от Chromium, что позволяет предоставлять общий доступ к полному экрану, определенному классическому приложению или определенной вкладке браузера.
Вы можете предоставить разрешения на общий доступ к экранам в macOS
Чтобы открыть общий доступ в macOS Safari или macOS Chrome, предоставьте необходимые разрешения браузерам в меню ОС: Системные настройки>безопасности и записи экрана конфиденциальности.>
Рекомендации по Службы коммуникации Azure вызов собственного пакета SDK
В этом разделе содержатся сведения о рекомендациях, связанных с Службы коммуникации Azure вызовом собственного пакета SDK для голосового и видеозвонка.
Поддерживаемые платформы
Ниже приведены минимальные требования к платформе ОС для обеспечения оптимальной функциональности вызывающего собственного пакета SDK.
- Поддержка iOS 10.0+ во время сборки и iOS 12.0+ во время выполнения
- Xcode 12.0+
- Поддержка iPadOS 13.0+
Проверка разрешений устройства для запросов приложений
Чтобы использовать собственный пакет SDK для вызовов, потребители должны авторизовать каждую платформу для доступа к ресурсам устройства. Разработчик должен запрашивать у пользователя доступ и убедиться, что разрешения включены. Потребитель разрешает эти права доступа, поэтому убедитесь, что у них есть необходимые разрешения.
NSMicrophoneUsageDescription
для доступа к микрофонуNSCameraUsageDescription
для доступа к камере
Настройка журналов
Реализация ведения журнала, как описано в руководстве по получению файлов журналов, является более критически важной, чем когда-либо. Подробные журналы помогают диагностировать проблемы, связанные с моделями устройств или версиями ОС, которые соответствуют минимальным критериям пакета SDK. Мы рекомендуем разработчикам настраивать журналы с помощью API журналов. Без журналов группа поддержки Майкрософт не может помочь отладить и устранить неполадки с вызовами.
Отслеживание callID
CallID
— уникальный идентификатор для вызова. Он определяет коррелированные события от всех участников и конечных точек, которые подключаются во время одного вызова. В большинстве случаев вы используете его для просмотра журналов. Команда служба поддержки Майкрософт просит ее помочь устранить неполадки с звонками.
Вы должны отслеживать CallID
значение в телеметрии, настроенной в приложении. Чтобы понять, как получить значение для каждой платформы, следуйте рекомендациям в руководстве по устранению неполадок.
Подписка на диагностику пользователей и статистику качества мультимедиа
Эти Службы коммуникации Azure функции помогут улучшить взаимодействие с пользователем:
- Диагностика для пользователей: проверьте свойства вызова, чтобы определить причину проблем, влияющих на ваших клиентов.
- Статистика качества мультимедиа: изучите метрики качества аудио, видео и общего доступа к экранам для метрик качества входящих и исходящих вызовов. Мы рекомендуем собирать данные и отправлять их в прием конвейера после завершения вызова.
Управление обработкой ошибок
Если во время вызова или реализации возникают ошибки, методы возвращают объекты ошибок, содержащие коды ошибок. Важно использовать эти объекты ошибок для правильной обработки ошибок и отображения оповещений. Состояния вызова также возвращают коды ошибок, помогающие определить причины сбоев вызовов. Вы можете ознакомиться с руководством по устранению неполадок.
Управление видеопотоками
Не забудьте удалить VideoStreamRendererView
, когда пользовательский интерфейс больше не отображает видео. Используется VideoStreamType
для определения типа потока.
Проведение общего управления памятью
Предварительное выделение ресурсов. Инициализировать вызывающий клиент и все необходимые ресурсы во время запуска приложения, а не по требованию. Этот подход снижает задержку при запуске вызова.
Правильное удаление. Удалите все объекты вызова после использования, чтобы освободить системные ресурсы и избежать утечки памяти. Не забудьте отменить подписку на события , которые могут привести к утечке памяти.
Рассмотрим, как процессы обращаются к камере или микрофону
На мобильных устройствах, если одновременно несколько процессов пытаются получить доступ к камере или микрофону, первый процесс запроса доступа управляет устройством. В результате второй процесс сразу же теряет доступ к нему.
Оптимизация размера библиотеки
Оптимизация размера библиотек в разработке программного обеспечения имеет решающее значение по следующим причинам, особенно при том, что приложения становятся более сложными и ресурсоемкими:
Производительность приложения: небольшие библиотеки снижают объем кода, который приложение должно загружать, анализировать и выполнять. Это сокращение может значительно повысить время запуска и общую производительность приложения, особенно на устройствах с ограниченными ресурсами.
Использование памяти. Свести к минимуму размер библиотеки можно уменьшить объем памяти среды выполнения приложения. Это уменьшение важно для мобильных устройств, где память часто ограничена. Снижение использования памяти может привести к снижению производительности системы и повышению производительности многозадачности.
Дополнительные сведения см. в разделе: