Breadcrumbs

VMSPlayerController

Использует pusher-websocket-swift версии 10.0.1 с некоторыми исправлениями для целей VMSMobileSDK.

https://github.com/pusher/pusher-websocket-swift/tree/master

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

static func initialization(viewModel: VMSPlayerViewModel, delegate: VMSPlayerDelegate?) -> VMSPlayerController

VMSPlayerViewModel

init(
    camera: VMSCamera,
    groupCameras: [VMSCamera]?,
    user: VMSUser,
    translations: VMSPlayerTranslations,
    playerApi: VMSPlayerApi,
    options: VMSPlayerOptions
)

camera — камера, которую нужно открыть в плеере

groupCameras — если установить этот параметр, можно провести пальцем по плееру, чтобы изменить камеру, воспроизводимую в плеере

user — текущий пользователь

translations — словарь переводов, необходимых внутри плеера. Вы можете создать его на основе того, что вы получаете с сервера. Подробности см. в StaticApi

playerApi — объект VSMobileSDK или пользовательский объект, реализующий CameraApiPlayerApi и CameraEventsApi

options — пользовательские параметры, которые можно установить для плеера

VMSPlayerOptions

init(
    language: VMSLanguage?,
    allowVibration: Bool?,
    allowSoundOnStart: Bool?l,
    markTypes: [VMSEventType],
    videoRates: [VMSVideoRates]?
)

language — язык, по умолчанию: английский

allowVibration — установите значение no, если вы не хотите, чтобы устройство вибрировало при выборе некоторых настроек. По умолчанию: yes

allowSoundOnStart — указывает, разрешено ли проигрывателю включать звук, если в камере есть звук сразу после загрузки проигрывателя. По умолчанию true

markTypes — массив доступных типов меток. См. StaticsApi для получения дополнительной информации

videoRates — массив доступных скоростей воспроизведения видео у плеера. См. StaticsApi для получения дополнительной информации

VMSOpenPlayerOptions

Дополнительно вы можете установить параметры открытия, если вам нужно открыть плеер в определенных условиях.

init(
    event: VMSEvent?,
    archiveDate: Date?,
    showEventEdit: Bool,
    popNavigationAfterEventEdit: Bool,
    pushEventsListAfterEventEdit: Bool,
    openArchive: Bool
)

event — событие, которое нужно отобразить/редактировать в плеере. Параметру isEventArchive будет присвоено значение true автоматически

archiveDate — установите дату, если вам нужно открыть архив в определенную дату

showEventEdit — установите для этого параметра значение true, если вы хотите открыть экран редактирования событий. event также должно быть установлено

popNavigationAfterEventEdit — установите для этого параметра значение true, если вы хотите, чтобы плеер контроллер выскакивал после сохранения или отмены редактирования события

pushEventsListAfterEventEdit — установите для этого параметра значение true, если вы хотите отображать экран списка событий после сохранения или отмены редактирования события

openArchive — установите для этого параметра значение true, если вы хотите открыть архив в плеер контроллере

VMSPlayerDelegate

VMSPlayerController использует VMSPlayerDelegate

playerDidAppear() — вызывается, когда плеер загружается и появляется на экране

gotoEventsList(camera: VMSCamera) — вызывается при нажатии кнопки «Список событий»

soundChanged(isOn: Bool) — вызывается при нажатии кнопки «отключить/включить звук»

screenshotCreated(image: UIImage, cameraName: String, date: Date) — вызывается, когда снимок экрана сделан из текущего кадра

logPlayerEvent(event: String) — если вы хотите записывать активность пользователя, этот метод предоставляет названия действий для передачи в ваше приложение

playerDidReceiveError(message: String) — показать ошибку плеера

playerDidReceiveInfo(message: String) — показать информацию о плеере

dismissPlayerErrors() — если вы показываете представления ошибок, имеющие время действия, отклоните их

Обновление плеера

Плеер отвечает на эти имена уведомлений, чтобы обрабатывать их и соответствующим образом обновляться.

extension Notification.Name {
    static let noConnectionError
    static let updateUserPermissions
    static let updateUserCameras
    static let updateMarks
    static let updateMark
}

noConnectionError — опубликовать это уведомление в случае отсутствия соединения. Плеер прекратит воспроизведение

updateUserPermissions — в случае изменения прав пользователя необходимо обновить плеер

updateUserCameras — если вы получили сокет cameraUpdate и текущая камера была удалена из учетной записи пользователя, плеер будет закрыт должным образом. Это предпочтительный способ закрытия плеера

updateMarks — если вы получили сокет markCreated или markDeleted, используйте это уведомление для обновления плеера

updateMark — если вы получили сокет markUpdated, используйте это уведомление для обновления плеера