We have created a Flutter plugin where iOS code is written in 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)
}
}
}
When we are installing this plugin in a Flutter app and calling CooeePlugin.getUDID()
in the dart file, the above method is not being called. The weird thing is that even no error is being logged.
Any idea?
After an hour of debugging, we duplicated the same code in channel.setMethodCallHandler
and it worked-
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)
}
}
}
We tried to Google the issue but couldn't find any relevant reason for this.