Browse Source

上传代码

weicu
liwei1dao 1 year ago
parent
commit
773b2e2c29
  1. 4
      ios/Podfile.lock
  2. 2
      local_plugins/agent_service/ios/agent_service/Sources/agent_service/AgentServiceImpl.swift
  3. 41
      local_plugins/ble_service/ios/ble_service/Sources/ble_service/BleService.swift
  4. 23
      local_plugins/ble_service/ios/ble_service/Sources/ble_service/SwiftBleServicePlugin.swift
  5. 11
      local_plugins/ble_service/lib/ble_service.dart

4
ios/Podfile.lock

@ -85,7 +85,7 @@ PODS:
- SDWebImage/Core (~> 5.17)
- spotify_sdk (0.0.1):
- Flutter
- tencentcloud_cos_sdk_plugin (1.2.3):
- tencentcloud_cos_sdk_plugin (1.2.4):
- Flutter
- QCloudCOSXML (= 6.4.7)
- WechatOpenSDK-XCFramework (2.0.4)
@ -203,7 +203,7 @@ SPEC CHECKSUMS:
SDWebImage: f29024626962457f3470184232766516dee8dfea
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
spotify_sdk: a48400bb29f70c4fe251ebfdc9135c37097ac5ca
tencentcloud_cos_sdk_plugin: c3d78b2c3bae42b5a20009dc047f3f1621e6272b
tencentcloud_cos_sdk_plugin: 7bed564dbe72df23e7b5cacb1e51b1a20cb1639c
WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f
wifi_iot: f645260a2be8608517b2a9bf4c39b98e97003acc

2
local_plugins/agent_service/ios/agent_service/Sources/agent_service/AgentServiceImpl.swift

@ -207,7 +207,7 @@ class AgentServiceImpl: NSObject {
return false
}
guard let asrsetupSuccess = azureAsrHelper?.setupEventListeners(
callback: self,
callback: self
), asrsetupSuccess else {
sendError("初始化语音识别服务失败", code: "ASR_INIT_ERROR")
return false

41
local_plugins/ble_service/ios/ble_service/Sources/ble_service/BleService.swift

@ -46,6 +46,8 @@ public class BleService: NSObject {
private var isScanning = false
private var scanTimer: Timer?
// 用于存储配对设备UUID的UserDefaults键
private let pairedDeviceUUIDKey = "com.yunqiinnovation.ble_service.paired_device_uuid"
// 新增:设备缓存和广播数据记录
private var discoveredDevices: [String: [String: Any]] = [:] // 以设备ID为key的设备信息缓存
private var deviceAdvertisementData: [String: [String: Any]] = [:] // 设备广播数据缓存
@ -164,6 +166,27 @@ public class BleService: NSObject {
return centralManager!
}
func getPairedMacAddress() -> String? {
let uuidString = UserDefaults.standard.string(forKey: pairedDeviceUUIDKey)
if let uuidString = uuidString, !uuidString.isEmpty {
os_log("获取已配对设备UUID: %{public}@", log: logger, type: .info, uuidString)
return uuidString
}
os_log("未找到已配对设备UUID", log: logger, type: .info)
return nil
}
/// 清除已保存的配对设备UUID
private func clearPairedMacAddress() {
UserDefaults.standard.removeObject(forKey: pairedDeviceUUIDKey)
UserDefaults.standard.synchronize()
os_log("已清除配对设备UUID", log: logger, type: .info)
}
// MARK: - 清除配对关系
func clearAssociations() {
resetBluetoothState()
// 清除保存的配对设备UUID
clearPairedMacAddress()
}
/// 开始扫描BLE设备
public func startScan(timeout: TimeInterval = 30.0) -> Bool {
if centralManager == nil {
@ -208,20 +231,6 @@ public class BleService: NSObject {
isScanning = false
scanTimer?.invalidate()
scanTimer = nil
// let deviceCount = discoveredDevices.count
// os_log("⏹️ 停止BLE扫描,共发现 %d 个设备", log: logger, type: .info, deviceCount)
//
// // 打印所有发现的设备摘要
// if deviceCount > 0 {
// os_log("📋 扫描结果摘要:", log: logger, type: .info)
// for (index, deviceInfo) in discoveredDevices.values.enumerated() {
// if let name = deviceInfo["name"] as? String,
// let rssi = deviceInfo["rssi"] as? Int {
// os_log("📋 %d. %{public}@ (RSSI: %d)", log: logger, type: .info, index + 1, name, rssi)
// }
// }
// }
}
}
@ -417,6 +426,10 @@ public class BleService: NSObject {
// MARK: - 回调通知方法
//清除蓝牙状态(仅用于测试或重置,不会清除系统授权)
func resetBluetoothState() {
}
/// 通知所有回调扫描结果
private func notifyScanResult(devices: [[String: Any]]) {
for callback in callbacks {

23
local_plugins/ble_service/ios/ble_service/Sources/ble_service/SwiftBleServicePlugin.swift

@ -124,6 +124,29 @@ public class SwiftBleServicePlugin: NSObject, FlutterPlugin {
os_log("🔍 查询设备信息,deviceName: %s", log: logger, type: .info, deviceName)
let info = BleService.shared.getDeviceAdvertisementData(deviceName: deviceName)
result(info)
case "isCompanionSupported":
#if canImport(AccessorySetupKit) && swift(>=5.9)
if #available(iOS 18.0, *) {
result(true)
} else {
result(false)
}
#else
result(false)
#endif
case "getPairedMacAddress":
let pairedUUID = BleService.shared.getPairedMacAddress()
result(nil)
case "clearAssociations":
BleService.shared.clearAssociations()
result(true)
case "startDeviceAssociation":
let arguments = call.arguments as? [String: Any]
let deviceNamePattern = (arguments?["deviceNamePattern"] as? String) ?? ""
let serviceUuid = (arguments?["serviceUuid"] as? String) ?? ""
let macAddress = (arguments?["macAddress"] as? String) ?? ""
case "connectToDevice":
let arguments = call.arguments as? [String: Any]

11
local_plugins/ble_service/lib/ble_service.dart

@ -293,6 +293,17 @@ class BleService {
}
}
/// 断开连接
Future<bool> stopScan() async {
try {
final result = await _methodChannel.invokeMethod<bool>('stopScan');
return result ?? false;
} catch (e) {
print('开启扫描ble设备失败: $e');
return false;
}
}
/// 获取设备信息
Future<Map<String, String>?> getDeviceInfo(String deviceName) async {
try {

Loading…
Cancel
Save