1
1
import Cocoa
2
2
import FlutterMacOS
3
3
4
- public class ProtocolHandlerPlugin : NSObject , FlutterPlugin , FlutterStreamHandler {
5
- private var _eventSink : FlutterEventSink ?
4
+ public class ProtocolHandlerPlugin : NSObject , FlutterPlugin {
5
+ private var channel : FlutterMethodChannel !
6
6
7
7
override init ( ) {
8
8
super. init ( ) ;
9
9
NSAppleEventManager . shared ( ) . setEventHandler ( self , andSelector: #selector( handleURLEvent ( _: with: ) ) , forEventClass: AEEventClass ( kInternetEventClass) , andEventID: AEEventID ( kAEGetURL) )
10
10
}
11
11
12
12
public static func register( with registrar: FlutterPluginRegistrar ) {
13
- let instance = ProtocolHandlerPlugin ( )
14
-
15
13
let channel = FlutterMethodChannel ( name: " protocol_handler " , binaryMessenger: registrar. messenger)
14
+ let instance = ProtocolHandlerPlugin ( )
15
+ instance. channel = channel
16
16
registrar. addMethodCallDelegate ( instance, channel: channel)
17
-
18
- let eventChannel = FlutterEventChannel ( name: " protocol_handler/events " , binaryMessenger: registrar. messenger)
19
- eventChannel. setStreamHandler ( instance)
20
17
}
21
18
22
19
@objc
23
20
private func handleURLEvent( _ event: NSAppleEventDescriptor , with replyEvent: NSAppleEventDescriptor ) {
24
21
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 )
26
27
}
27
28
28
29
public func application( _ application: NSApplication , continue userActivity: NSUserActivity , restorationHandler: @escaping ( [ NSUserActivityRestoring ] ) -> Void ) -> Bool {
@@ -38,14 +39,4 @@ public class ProtocolHandlerPlugin: NSObject, FlutterPlugin, FlutterStreamHandle
38
39
result ( FlutterMethodNotImplemented)
39
40
}
40
41
}
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
- }
51
42
}
0 commit comments