FlutterMethodChannelManager.swift 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //
  2. // FlutterMethodChannelManager.swift
  3. // Runner
  4. //
  5. // Created by Destiny on 2025/5/8.
  6. //
  7. import Flutter
  8. import UIKit
  9. class FlutterMethodChannelManager: NSObject {
  10. // 单例模式
  11. static let shared = FlutterMethodChannelManager()
  12. // 方法通道
  13. private var keyboardChannel: FlutterMethodChannel?
  14. // 私有初始化方法
  15. private override init() {
  16. super.init()
  17. }
  18. // 设置方法通道
  19. func setupMethodChannels(controller: FlutterViewController) {
  20. // 创建键盘相关的方法通道
  21. keyboardChannel = FlutterMethodChannel(
  22. name: "keyboard_ios",
  23. binaryMessenger: controller.binaryMessenger)
  24. // 设置方法调用处理器
  25. keyboardChannel?.setMethodCallHandler { [weak self] (call, result) in
  26. guard let self = self else { return }
  27. switch call.method {
  28. case "saveAuthToken":
  29. if let args = call.arguments as? [String: Any],
  30. let token = args["token"] as? String {
  31. KeyboardSharedDataManager.shared.saveToken(token)
  32. result(true)
  33. } else {
  34. result(FlutterError(code: "INVALID_ARGUMENTS", message: "无效的参数", details: nil))
  35. }
  36. case "clearAuthToken":
  37. KeyboardSharedDataManager.shared.clearAuthToken()
  38. result(true)
  39. default:
  40. result(FlutterMethodNotImplemented)
  41. }
  42. }
  43. }
  44. // 保存认证Token到App Group共享存储
  45. private func saveAuthToken(_ token: String) {
  46. if let userDefaults = UserDefaults(suiteName: "group.com.yourcompany.aikeyboard") {
  47. userDefaults.set(token, forKey: "auth_token")
  48. userDefaults.synchronize()
  49. print("认证Token已保存到共享存储")
  50. } else {
  51. print("无法访问App Group共享存储")
  52. }
  53. }
  54. // 从App Group共享存储获取认证Token
  55. private func getAuthToken() -> String? {
  56. let userDefaults = UserDefaults(suiteName: "group.com.yourcompany.aikeyboard")
  57. return userDefaults?.string(forKey: "auth_token")
  58. }
  59. }