flutter_cast_framework_modern/ios/Classes/MessageCastingChannel.swift
2021-11-01 16:29:02 +01:00

61 lines
1.7 KiB
Swift

//
// MessageCastingChannel.swift
// flutter_cast_framework
//
// Created by Gianluca Paradiso on 16/11/2019.
//
import Foundation
import GoogleCast
class MessageCastingChannel : GCKCastChannel {
let channel: FlutterMethodChannel
let namespace: String
init(namespace: String, channel: FlutterMethodChannel) {
self.channel = channel
self.namespace = namespace
super.init(namespace: namespace)
}
override func didReceiveTextMessage(_ message: String) {
print("Message received: .\(message)")
let argsMap: NSDictionary = [
"namespace": namespace,
"message": message
]
channel.invokeMethod(MethodNames.onMessageReceived.rawValue, arguments: argsMap)
}
public static func sendMessage(allCastingChannels: Dictionary<String, MessageCastingChannel>, castMessage: CastMessage) {
let namespaceRaw = castMessage.namespace
let messageRaw = castMessage.message
if (namespaceRaw == nil) {
print("Namespace not valid: can't send message")
return
}
let namespace = namespaceRaw!
let message = messageRaw ?? ""
let castingChannel = allCastingChannels[namespace]
if (castingChannel == nil) {
print("Namespace not registered: can't send message")
}
castingChannel?.sendMessage(message: message)
}
private func sendMessage(message: String) {
var error: GCKError?
self.sendTextMessage(message, error: &error)
if error != nil {
print("Error sending text message \(error.debugDescription)")
}
}
}