FlutterMethodChannelManager.swift 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. case "saveIDFV":
  40. if let args = call.arguments as? [String: Any],
  41. let idfv = args["idfv"] as? String {
  42. KeyboardSharedDataManager.shared.saveInitIDFV(idfv)
  43. result(true)
  44. } else {
  45. result(FlutterError(code: "INVALID_ARGUMENTS", message: "无效的参数", details: nil))
  46. }
  47. case "saveIDFA":
  48. if let args = call.arguments as? [String: Any],
  49. let idfa = args["idfa"] as? String {
  50. KeyboardSharedDataManager.shared.saveInitIDFA(idfa)
  51. result(true)
  52. } else {
  53. result(FlutterError(code: "INVALID_ARGUMENTS", message: "无效的参数", details: nil))
  54. }
  55. default:
  56. result(FlutterMethodNotImplemented)
  57. }
  58. }
  59. }
  60. // 保存认证Token到App Group共享存储
  61. private func saveAuthToken(_ token: String) {
  62. if let userDefaults = UserDefaults(suiteName: "group.com.yourcompany.aikeyboard") {
  63. userDefaults.set(token, forKey: "auth_token")
  64. userDefaults.synchronize()
  65. print("认证Token已保存到共享存储")
  66. } else {
  67. print("无法访问App Group共享存储")
  68. }
  69. }
  70. // 从App Group共享存储获取认证Token
  71. private func getAuthToken() -> String? {
  72. let userDefaults = UserDefaults(suiteName: "group.com.yourcompany.aikeyboard")
  73. return userDefaults?.string(forKey: "auth_token")
  74. }
  75. }