From 1b689bc8d603ed7c33bd6ab7f2ff1bc2ebdbef76 Mon Sep 17 00:00:00 2001 From: gianlucaparadise Date: Mon, 1 Nov 2021 15:47:22 +0100 Subject: [PATCH] Pigeon: Integrated `sendMessage` API in Swift --- ios/Classes/FlutterCastFrameworkPlugin.h | 1 + ios/Classes/MessageCastingChannel.swift | 12 +++--------- ios/Classes/MethodNames.swift | 1 - ios/Classes/SwiftFlutterCastFrameworkPlugin.swift | 15 +++++++++++---- ios/Classes/flutter_cast_framework.h | 12 ++++++++++++ 5 files changed, 27 insertions(+), 14 deletions(-) create mode 100644 ios/Classes/flutter_cast_framework.h diff --git a/ios/Classes/FlutterCastFrameworkPlugin.h b/ios/Classes/FlutterCastFrameworkPlugin.h index b8b4b96..07d12e0 100644 --- a/ios/Classes/FlutterCastFrameworkPlugin.h +++ b/ios/Classes/FlutterCastFrameworkPlugin.h @@ -1,4 +1,5 @@ #import +#import "HostApis.h" @interface FlutterCastFrameworkPlugin : NSObject @end diff --git a/ios/Classes/MessageCastingChannel.swift b/ios/Classes/MessageCastingChannel.swift index 7b19687..2a5e2b8 100644 --- a/ios/Classes/MessageCastingChannel.swift +++ b/ios/Classes/MessageCastingChannel.swift @@ -29,15 +29,9 @@ class MessageCastingChannel : GCKCastChannel { channel.invokeMethod(MethodNames.onMessageReceived.rawValue, arguments: argsMap) } - public static func sendMessage(allCastingChannels: Dictionary, arguments: Any?) { - let argsMap = arguments as? NSDictionary - if (argsMap == nil) { - print("Arguments not valid: can't send message") - return - } - - let namespaceRaw = argsMap?.value(forKey: "namespace") as? String - let messageRaw = argsMap?.value(forKey: "message") as? String + public static func sendMessage(allCastingChannels: Dictionary, castMessage: CastMessage) { + let namespaceRaw = castMessage.namespace + let messageRaw = castMessage.message if (namespaceRaw == nil) { print("Namespace not valid: can't send message") diff --git a/ios/Classes/MethodNames.swift b/ios/Classes/MethodNames.swift index 7427b22..d02b0dc 100644 --- a/ios/Classes/MethodNames.swift +++ b/ios/Classes/MethodNames.swift @@ -25,5 +25,4 @@ enum MethodNames : String { case getSessionMessageNamespaces = "CastSession.getSessionMessageNamespaces" case onMessageReceived = "CastSession.onMessageReceived" - case sendMessage = "CastSession.sendMessage" } diff --git a/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift b/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift index d5446e9..aca0bdb 100644 --- a/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift +++ b/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift @@ -2,11 +2,15 @@ import Flutter import UIKit import GoogleCast -public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessionManagerListener { +public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessionManagerListener, CastApi { public static func register(with registrar: FlutterPluginRegistrar) { - let channel = FlutterMethodChannel(name: "flutter_cast_framework", binaryMessenger: registrar.messenger()) + let messenger : FlutterBinaryMessenger = registrar.messenger() + let channel = FlutterMethodChannel(name: "flutter_cast_framework", binaryMessenger: messenger) let instance = SwiftFlutterCastFrameworkPlugin(channel: channel) registrar.addMethodCallDelegate(instance, channel: channel) + + let api : CastApi & NSObjectProtocol = instance + CastApiSetup(messenger, api) } private let castContext: GCKCastContext @@ -110,8 +114,6 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio switch call.method { case MethodNames.showCastDialog.rawValue: castContext.presentCastDialog() - case MethodNames.sendMessage.rawValue: - MessageCastingChannel.sendMessage(allCastingChannels: self.castingChannels, arguments: call.arguments) default: print("Method [\(call.method)] is not implemented.") } @@ -122,6 +124,11 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio castStateObserver = nil } + public func sendMessageMessage(_ message: CastMessage, error: AutoreleasingUnsafeMutablePointer) { + + MessageCastingChannel.sendMessage(allCastingChannels: self.castingChannels, castMessage: message) + } + // MARK: - GCKSessionManagerListener // onSessionSuspended diff --git a/ios/Classes/flutter_cast_framework.h b/ios/Classes/flutter_cast_framework.h new file mode 100644 index 0000000..d2d929c --- /dev/null +++ b/ios/Classes/flutter_cast_framework.h @@ -0,0 +1,12 @@ +// +// flutter_cast_framework.h +// flutter_cast_framework +// +// Created by Gianluca Paradiso on 01/11/21. +// + +#ifndef flutter_cast_framework_h +#define flutter_cast_framework_h + + +#endif /* flutter_cast_framework_h */