11import Cocoa
22import FlutterMacOS
33
4- public class ProtocolHandlerPlugin : NSObject , FlutterPlugin , FlutterStreamHandler {
5- private var _eventSink : FlutterEventSink ?
4+ public class ProtocolHandlerPlugin : NSObject , FlutterPlugin {
5+ private var channel : FlutterMethodChannel !
66
77 override init ( ) {
88 super. init ( ) ;
99 NSAppleEventManager . shared ( ) . setEventHandler ( self , andSelector: #selector( handleURLEvent ( _: with: ) ) , forEventClass: AEEventClass ( kInternetEventClass) , andEventID: AEEventID ( kAEGetURL) )
1010 }
1111
1212 public static func register( with registrar: FlutterPluginRegistrar ) {
13- let instance = ProtocolHandlerPlugin ( )
14-
1513 let channel = FlutterMethodChannel ( name: " protocol_handler " , binaryMessenger: registrar. messenger)
14+ let instance = ProtocolHandlerPlugin ( )
15+ instance. channel = channel
1616 registrar. addMethodCallDelegate ( instance, channel: channel)
17-
18- let eventChannel = FlutterEventChannel ( name: " protocol_handler/events " , binaryMessenger: registrar. messenger)
19- eventChannel. setStreamHandler ( instance)
2017 }
2118
2219 @objc
2320 private func handleURLEvent( _ event: NSAppleEventDescriptor , with replyEvent: NSAppleEventDescriptor ) {
2421 guard let urlString = event. paramDescriptor ( forKeyword: AEKeyword ( keyDirectObject) ) ? . stringValue else { return }
25- _eventSink!( urlString) ;
22+
23+ let args : NSDictionary = [
24+ " url " : urlString,
25+ ]
26+ channel. invokeMethod ( " onProtocolUrlReceived " , arguments: args, result: nil )
2627 }
2728
2829 public func application( _ application: NSApplication , continue userActivity: NSUserActivity , restorationHandler: @escaping ( [ NSUserActivityRestoring ] ) -> Void ) -> Bool {
@@ -38,14 +39,4 @@ public class ProtocolHandlerPlugin: NSObject, FlutterPlugin, FlutterStreamHandle
3839 result ( FlutterMethodNotImplemented)
3940 }
4041 }
41-
42- public func onListen( withArguments arguments: Any ? , eventSink events: @escaping FlutterEventSink ) -> FlutterError ? {
43- self . _eventSink = events;
44- return nil
45- }
46-
47- public func onCancel( withArguments arguments: Any ? ) -> FlutterError ? {
48- self . _eventSink = nil
49- return nil
50- }
5142}
0 commit comments