VMSPusherApi
Используется pusher-websocket-swift версии 10.0.1 с некоторыми исправлениями для целей VMSMobileSDK.
https://github.com/pusher/pusher-websocket-swift/tree/master
Инициализация
init(baseUrl: String,
socketUrl: String,
appKey: String,
userToken: String,
userId: Int,
accessTokenId: String)
baseUrl — базовый URL для подключения к серверу. Используйте тот же самый, что вы использовали при инициализации VMS
socketUrl — специально для предоставленного базового URL, URL сокета для подключения к WebSocket. См. SocketApi, чтобы узнать, как получить эту информацию
appKey — ключ приложения для подключения к WebSocket. См. SocketApi, чтобы узнать, как получить эту информацию
userToken — токен текущего пользователя
userId — идентификатор текущего пользователя
accessTokenId — идентификатор токена доступа текущего пользователя
VMSSocketManager
Ответ VMSPusherApi на протокол VMSSocketManager.
isConnected() -> Bool — возвращает, подключен сокет или нет
connect() — используйте эту функцию для подключения к WebSocket
disconnect() — используйте эту функцию для отключения от WebSocket
VMSSocketManagerDelegate
VMSPusherApi использует VMSSocketManagerDelegate.
changedConnectionState(from old: ConnectionState, to new: ConnectionState) — реализуйте этот метод для отслеживания изменения статуса соединения
receivedError(error: PusherError) — реализуйте этот метод для получения ошибок от pusher
receivedAppSocket(socket: VMSAppSocketData) — реализуйте этот метод для получения сокетов VMSAppSocketType
receivedIntercomSocket(socket: VMSIntercomSocketData) — реализуйте этот метод для получения сокетов VMSIntercomPushTypes
VMSAppSocketData
В случае, если список камер был обновлен для этого пользователя.
case camerasUpdate(VMSCamerasUpdateSocket)
struct VMSCamerasUpdateSocket {
public let detached: [Int]? ///
public let attached: [Int]? ///
}
detached — список идентификаторов камер, которые были удалены из учетной записи этого пользователя
attached — список идентификаторов камер, которые были добавлены в учетную запись этого пользователя
В случае, если разрешения пользователя были обновлены.
case permissionsUpdate
В случае, если группы были обновлены для этого пользователя.
case groupsUpdate
В случае, если запрос syncGroups(for cameraId:, groupIds:,complete:) вернул значение async и был успешно выполненным. Для получения более подробной информации см. GroupApi.
case cameraGroupsSynced
В случае удачного манипулирования событиями.
case eventCreated(VMSEvent)
case eventDeleted(VMSEvent)
case eventUpdated(VMSEvent)
URL для загрузки архива успешно создан.
case archiveGenerated(VMSArchiveLinkSocket)
struct VMSArchiveLinkSocket {
public let download: VMSDownloadUrlData?
public struct VMSDownloadUrlData: Codable {
public let url: String?
}
}
В случае, если пользователь вышел из системы (например, сеанс был удален).
case logout
VMSIntercomPushTypes
В случае, если VOIP-вызов с домофона был отменен с самого домофона.
case callCanceled(VMSCanceledCall?)
Результаты действий пользователя с домофонами и кодами.
case intercomCodeStored(VMSIntercomCode?)
case intercomCallStored(VMSIntercomCall?)
case intercomStored(VMSIntercom?)
case intercomKeyConfirmed(VMSIntercom?)
case intercomRenamed(VMSIntercom?)
case intercomsDeleted(VMSIntercomDeleteSocket?)
case intercomCodesDeleted(VMSIntercomDeleteSocket?)
case callsDeleted(VMSIntercomDeleteSocket?)
case intercomKeyError(VMSIntercomErrorSocket?)
case intercomAddError(VMSIntercomErrorSocket?)