|
- import Cocoa
- import FlutterMacOS
-
- public class PlatformDeviceIdPlugin: NSObject, FlutterPlugin {
- public static func register(with registrar: FlutterPluginRegistrar) {
- let channel = FlutterMethodChannel(name: "com.di1shuai.flutter/platform_device_id", binaryMessenger: registrar.messenger)
- let instance = PlatformDeviceIdPlugin()
- registrar.addMethodCallDelegate(instance, channel: channel)
- }
-
- /// 执行脚本命令
- ///
- /// - Parameters:
- /// - command: command content
- /// - needAuthorize: need sudo ?
- /// - Returns: result string
- public func runCommand(_ command: String, needAuthorize: Bool) -> String {
- let scriptWithAuthorization = """
- do shell script "\(command)" with administrator privileges
- """
-
- let scriptWithoutAuthorization = """
- do shell script "\(command)"
- """
-
- let script = needAuthorize ? scriptWithAuthorization : scriptWithoutAuthorization
- let appleScript = NSAppleScript(source: script)
-
- var error: NSDictionary? = nil
- let result = appleScript!.executeAndReturnError(&error)
- if let error = error {
- print("Error -> \n\(command)\n:")
- print(error)
- // return (false, nil)
- return ""
- }
-
- // return (true, result.stringValue)
- return result.stringValue!
- }
-
- public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
- switch call.method {
- case "getPlatformVersion":
- result("macOS " + ProcessInfo.processInfo.operatingSystemVersionString)
- case "getDeviceId":
- let command = String(#"ioreg -l | grep IOPlatformUUID | awk 'NR==1{print $4}' | sed 's/\"//g'"#)
- let deviceId = runCommand(command,needAuthorize: false);
- result(deviceId)
- default:
- result(FlutterMethodNotImplemented)
- }
- }
- }
|