You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SwiftFlutterJailbreakDetectionPlugin遇并发安全错误:FlutterMethodNotImplemented引用问题

解决FlutterMethodNotImplemented并发不安全问题

在Swift编写Flutter插件时,调用result(FlutterMethodNotImplemented)触发并发不安全警告,核心原因是FlutterMethodNotImplemented是全局可变变量,涉及共享可变状态,不符合Swift并发安全规范。

修复方案

直接构造局部的FlutterError实例替代全局变量,代码示例如下:

public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
    switch call.method {
    case "jailbroken":
        let check2 = IOSSecuritySuite.amIJailbroken()
        result(check2)
    case "developerMode":
        result(IOSSecuritySuite.amIRunInEmulator())
    default:
        // 用局部构造的FlutterError替换全局变量
        result(FlutterError(code: "unimplemented", message: "Method not implemented", details: nil))
    }
}

完整修改后的代码

import Flutter
import UIKit
import IOSSecuritySuite

public class SwiftFlutterJailbreakDetectionPlugin: NSObject, FlutterPlugin {
    public static func register(with registrar: FlutterPluginRegistrar) {
        let channel = FlutterMethodChannel(name: "flutter_jailbreak_detection", binaryMessenger: registrar.messenger())
        let instance = SwiftFlutterJailbreakDetectionPlugin()
        registrar.addMethodCallDelegate(instance, channel: channel)
    }

    public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
        switch call.method {
        case "jailbroken":
            let check2 = IOSSecuritySuite.amIJailbroken()
            result(check2)
        case "developerMode":
            result(IOSSecuritySuite.amIRunInEmulator())
        default:
            result(FlutterError(code: "unimplemented", message: "Method not implemented", details: nil))
        }
    }
}

该方案既满足Swift并发安全要求,也能准确向Flutter端传递方法未实现的错误信息。

内容的提问来源于stack exchange,提问作者Mahendra Telure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 20:02:32