我正在用Swift编写Flutter插件。我已经成功创建了插件,并且可以使用创建新Flutter插件时生成的默认代码从Flutter调用我的Swift函数。我的Swift代码目前看起来像这样。
public class MyFlutterPlugin: NSObject, FlutterPlugin {
public static func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: "my_plugin", binaryMessenger: registrar.messenger())
let instance = MyFlutterPlugin()
registrar.addMethodCallDelegate(instance, channel: channel)
}
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
if call.method == "hello" {
result("hello from swift")
} else {
result(FlutterMethodNotImplemented)
}
}
}
我希望将应用程序委托调用(例如,收到通知时)发送到我的插件。我想知道如何使用Swift进行这项工作。
我已经从一些Objective C插件的源代码中看到了行[registrar addApplicationDelegate:instance];
。但是我不知道如何在Swift中实现这样的目标,为此似乎不存在官方文档。
事实证明这很简单。用registrar.addApplicationDelegate(instance)
注册以接听电话。然后包括这样的应用程序委托方法:
public func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let tokenParts = deviceToken.map { data -> String in
return String(format: "%02.2hhx", data)
}
let token = tokenParts.joined()
channel.invokeMethod("onToken", arguments: token)
}