Sha*_*wal 5 swift flutter flutter-plugin flutter-ios
我们创建了一个 Flutter 插件,其中 iOS 代码是用 Swift 编写的 -
import UIKit
import CooeeSDK
public class SwiftCooeePlugin: NSObject, FlutterPlugin {
var sdkInstance = RegisterUser.shared
static public func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: "cooee_plugin", binaryMessenger: registrar.messenger())
let instance = SwiftCooeePlugin()
registrar.addMethodCallDelegate(instance, channel: channel)
}
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
if call.method == "getUDID"{
print(">>>getUDID 1")
let UDID = RegisterUser.shared.fetchUDID() ?? ""
result(UDID)
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我们在 Flutter 应用程序中安装此插件并CooeePlugin.getUDID()在 dart 文件中调用时,不会调用上述方法。奇怪的是,甚至没有记录任何错误。
任何想法?
经过一个小时的调试,我们复制了相同的代码channel.setMethodCallHandler并且它起作用了-
public class SwiftCooeePlugin: NSObject, FlutterPlugin {
var sdkInstance = RegisterUser.shared
static public func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: "cooee_plugin", binaryMessenger: registrar.messenger())
let instance = SwiftCooeePlugin()
registrar.addMethodCallDelegate(instance, channel: channel)
channel.setMethodCallHandler({
(call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
if call.method == "getUDID"{
print(">>>getUDID 2")
let UDID = RegisterUser.shared.fetchUDID() ?? ""
result(UDID)
}
})
}
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
if call.method == "getUDID"{
print(">>>getUDID 1")
let UDID = RegisterUser.shared.fetchUDID() ?? ""
result(UDID)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我们尝试用 Google 搜索该问题,但找不到任何相关原因。
| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |