feat: 初始化 iOS 远程控制端项目
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import Foundation
|
||||
|
||||
/// 信令消息(JSON),与 WebRTCSignalServer 的 SignalMessage 字段一一对应。
|
||||
/// type: REGISTER / OFFER / ANSWER / ICE_CANDIDATE / TARGET_OFFLINE /
|
||||
/// CONNECTION_REJECTED / REQUEST_ERROR / REQUEST_TIMEOUT / REGISTER_SUCCESS 等
|
||||
struct SignalMessage: Codable {
|
||||
var type: String?
|
||||
var fromDeviceId: String?
|
||||
var toDeviceId: String?
|
||||
var deviceType: String?
|
||||
/// payload 为字符串形式的 JSON(如 {"sdp": "..."}),与服务端约定一致
|
||||
var payload: String?
|
||||
var authType: String?
|
||||
var authValue: String?
|
||||
|
||||
init(type: String? = nil,
|
||||
fromDeviceId: String? = nil,
|
||||
toDeviceId: String? = nil,
|
||||
deviceType: String? = nil,
|
||||
payload: String? = nil,
|
||||
authType: String? = nil,
|
||||
authValue: String? = nil) {
|
||||
self.type = type
|
||||
self.fromDeviceId = fromDeviceId
|
||||
self.toDeviceId = toDeviceId
|
||||
self.deviceType = deviceType
|
||||
self.payload = payload
|
||||
self.authType = authType
|
||||
self.authValue = authValue
|
||||
}
|
||||
|
||||
/// 解析 payload 字符串为 JSON 字典
|
||||
func payloadJSON() -> [String: Any]? {
|
||||
guard let payload, let data = payload.data(using: .utf8) else { return nil }
|
||||
return (try? JSONSerialization.jsonObject(with: data)) as? [String: Any]
|
||||
}
|
||||
|
||||
/// 将字典序列化为 payload 字符串
|
||||
static func encodePayload(_ dict: [String: Any]) -> String? {
|
||||
guard let data = try? JSONSerialization.data(withJSONObject: dict) else { return nil }
|
||||
return String(data: data, encoding: .utf8)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user