如何在Swift Flutter插件中接收应用程序委托调用?

问题描述 投票:0回答:1

我正在用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中实现这样的目标,为此似乎不存在官方文档。

ios swift flutter
1个回答
0
投票

事实证明这很简单。用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)
}
© www.soinside.com 2019 - 2024. All rights reserved.