乘车码分包传输 ride-code
authorliangzhenying <867174124@qq.com>
Fri, 4 Jul 2025 05:58:37 +0000 (13:58 +0800)
committerliangzhenying <867174124@qq.com>
Fri, 4 Jul 2025 05:58:37 +0000 (13:58 +0800)
13 files changed:
Doc/日志/固件升级失败.txt [new file with mode: 0644]
Doc/最新/.~手表AI协议.docx [deleted file]
IOTBluetooth/IOTBluetooth/Example/LogViewController.swift
IOTBluetooth/IOTBluetooth/IOTBluetooth.xcworkspace/xcuserdata/yaozuopan.xcuserdatad/UserInterfaceState.xcuserstate
IOTBluetooth/IOTBluetooth/IOTBluetooth/IBAbility.swift
IOTBluetooth/IOTBluetooth/IOTBluetooth/IBFileSender.swift
IOTBluetooth/IOTBluetooth/IOTBluetooth/IBSender.swift
IOTBluetooth/IOTBluetooth/IOTBluetooth/MixSdk/Example/Example.xcodeproj/xcuserdata/yaozuopan.xcuserdatad/xcschemes/xcschememanagement.plist
IOTBluetooth/IOTBluetooth/IOTBluetooth/MixSdk/MixSdk.xcworkspace/xcuserdata/yaozuopan.xcuserdatad/UserInterfaceState.xcuserstate
IOTBluetooth/IOTBluetooth/IOTBluetooth/MixSdk/MixSdk/MixSdk.xcodeproj/xcuserdata/yaozuopan.xcuserdatad/xcschemes/xcschememanagement.plist
IOTBluetooth/IOTBluetooth/IOTBluetooth/MixSdk/Pods/Pods.xcodeproj/xcuserdata/yaozuopan.xcuserdatad/xcschemes/xcschememanagement.plist
IOTBluetooth/IOTBluetooth/IOTBluetooth/Models/IBWatchInfoH5.swift
IOTBluetooth/IOTBluetooth/IOTBluetooth/RideCode/IBRideCodeManager.swift

diff --git a/Doc/日志/固件升级失败.txt b/Doc/日志/固件升级失败.txt
new file mode 100644 (file)
index 0000000..944222a
--- /dev/null
@@ -0,0 +1,448 @@
+CLIENT OF UIKIT REQUIRES UPDATE: This process does not adopt UIScene lifecycle. This will become an assert in a future version.
+logCollectUserId must be less than 128.
+==================可接入免费的网络分析能力!!!===================
+详情见:https://developer.umeng.com/docs/193624/detail/194595#h4-xf3-pt3-wwy
+================开启网络模块的开发者必读提醒!!!=================
+========同时集成U-UAPM网络模块和NSURLProtocol特别注意如下========
+========保证NSURLProtocol先初始化,U-UAPM网络模块后初始化=========
+=========================示例代码如下:========================
+    [NSURLProtocol registerClass:[UMURLProtocol class]];
+
+    UMAPMConfig* config = [UMAPMConfig defaultConfig];
+    config.networkEnable = YES;
+    [UMCrashConfigure setAPMConfig:config];
+    [UMConfigure initWithAppkey:UMAPPKEY channel:UMChannel];
+
+FAQ链接如下:
+https://developer.umeng.com/docs/193624/detail/352123
+=============================================================
+[Reporter] SDK init success
+logCollectUserId must be less than 128.
+2025-06-12 15:55:57.236 [IOTBluetooth-031]: ==============IOTBluetooth_v2.0.2=====================
+host=(null)
+port=(null)
+type=kCFProxyTypeNone
+2025-06-12 15:55:57.370 [IOTBluetooth-015]: 当前网络状态改变true
+2025-06-12 15:55:57.370 UBManager.swift prepare() [Line 154] Verbose: 2.0.2
+2025-06-12 15:55:57.375 [IOTBluetooth-062]: 1
+2025-06-12 15:55:57.375 [IOTBluetooth-156]: 1002 Write: 730901010000000100000001000000010001ff Bytes(19)
+2025-06-12 15:55:57.375 [IOTBluetooth-172]: 手机未连上蓝牙设备!
+2025-06-12 15:55:57.375 UBOfflineChecker.swift prepare() [Line 45] Bluetooth: UBOfflineChecker Ready.
+2025-06-12 15:55:57.456 BMLocalNotification.swift requestAuthorization() [Line 67] Verbose: 2
+UMAPM_NetworkEnable(0:1): 0
+UMAPM_MemEnable(0:0): 0
+UMAPM_OOMSampling(0,0):NO
+UMAPM_NetworkSampling(0,0):NO
+2025-06-12 15:55:57.658 [IOTBluetooth-116]: 开始扫描蓝牙设备...
+2025-06-12 15:55:57.661 [IOTBluetooth-207]: poweredOn
+tcp_input [C1.1.1:3] flags=[R] seq=3912953162, ack=3657537026, win=0 state=LAST_ACK rcv_nxt=3912953162, snd_una=4152042502
+tcp_input [C1.1.1:3] flags=[R] seq=3912953162, ack=3657537026, win=0 state=CLOSED rcv_nxt=3912953162, snd_una=4152042502
+tcp_input [C1.1.1:3] flags=[R] seq=3912953162, ack=3657537026, win=0 state=CLOSED rcv_nxt=3912953162, snd_una=4152042502
+tcp_input [C2.1.1:3] flags=[R] seq=2407215361, ack=1610070882, win=0 state=LAST_ACK rcv_nxt=2407215361, snd_una=429175426
+tcp_input [C2.1.1:3] flags=[R] seq=2407215361, ack=1610070882, win=0 state=CLOSED rcv_nxt=2407215361, snd_una=429175426
+tcp_input [C3.1.1:3] flags=[R] seq=2255938117, ack=1146931541, win=0 state=LAST_ACK rcv_nxt=2255938117, snd_una=2465726230
+tcp_input [C3.1.1:3] flags=[R] seq=2255938117, ack=1146931541, win=0 state=CLOSED rcv_nxt=2255938117, snd_una=2465726230
+tcp_input [C3.1.1:3] flags=[R] seq=2255938117, ack=1146931541, win=0 state=CLOSED rcv_nxt=2255938117, snd_una=2465726230
+2025-06-12 15:55:59.691 BMLaunchViewController.swift checkNetworkAuthStatus() [Line 172] Verbose: 已授权访问网络
+2025-06-12 15:55:59.997 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/app/application/new-version?id=1796118737042604035&currentVersionCode=11000
+App is being debugged, do not track this hang
+Hang detected: 0.30s (debugger attached, not reporting)
+2025-06-12 15:56:00.142 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:00.158 Request.swift adaptHandler [Line 38] Debug: ["app-id": "80_JsWgHTvEdZf5dAe5owyr", "appId": "80_JsWgHTvEdZf5dAe5owyr", "sob-token": "b67f9914e1904771b62b31306e9b5034"]
+2025-06-12 15:56:00.971 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"当前已经是最新版本","code":20006,"data":null}
+2025-06-12 15:56:01.055 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/app/application/new-version?id=1796118737042604035&currentVersionCode=11000
+2025-06-12 15:56:01.056 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:01.056 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"当前已经是最新版本","code":20006,"data":null}
+2025-06-12 15:56:01.210 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/uc/token
+2025-06-12 15:56:01.212 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:01.212 Request.swift adaptHandler [Line 38] Debug: ["sob-token": "b67f9914e1904771b62b31306e9b5034", "appId": "80_JsWgHTvEdZf5dAe5owyr", "app-id": "80_JsWgHTvEdZf5dAe5owyr"]
+2025-06-12 15:56:01.447 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"账号已登录","code":20000,"data":{"id":"1796118737042604035","avatar":"https://u-oss.thisiot.com/images/2025_01_14/1879019986452283393.jpg","userName":"22","createTime":"2024-05-30 17:57","regIp":null,"loginIp":null,"phone":"134*****445","token":"b67f9914e1904771b62b31306e9b5034","status":"1","roleId":null,"roleName":null,"companyId":null,"companyName":null,"menuVersion":null,"gender":"","vip":false,"verify":false}}
+2025-06-12 15:56:01.517 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/uc/token
+2025-06-12 15:56:01.517 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:01.518 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"账号已登录","code":20000,"data":{"id":"1796118737042604035","avatar":"https://u-oss.thisiot.com/images/2025_01_14/1879019986452283393.jpg","userName":"22","createTime":"2024-05-30 17:57","regIp":null,"loginIp":null,"phone":"134*****445","token":"b67f9914e1904771b62b31306e9b5034","status":"1","roleId":null,"roleName":null,"companyId":null,"companyName":null,"menuVersion":null,"gender":"","vip":false,"verify":false}}
+2025-06-12 15:56:01.687 BMNetwork.swift fetchUserInfo(completionHandler:) [Line 105] Verbose: success
+2025-06-12 15:56:01.771 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/uc/user-info
+2025-06-12 15:56:01.773 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:01.844 Request.swift adaptHandler [Line 38] Debug: ["app-id": "80_JsWgHTvEdZf5dAe5owyr", "appId": "80_JsWgHTvEdZf5dAe5owyr", "sob-token": "b67f9914e1904771b62b31306e9b5034"]
+App is being debugged, do not track this hang
+Hang detected: 0.30s (debugger attached, not reporting)
+2025-06-12 15:56:02.237 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"获取用户信息成功.","code":20000,"data":{"id":"1796118737063575553","userId":"1796118737042604035","registerIp":"119.123.72.209","birthday":"1993-01-01 00:00","qq":null,"weChat":null,"sign":null,"age":32,"tall":184,"weight":56000,"deleted":"0","gender":"","createTime":"2024-05-30 17:57","updateTime":"2024-05-30 17:57"}}
+2025-06-12 15:56:02.237 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/uc/user-info
+2025-06-12 15:56:02.237 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:02.238 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"获取用户信息成功.","code":20000,"data":{"id":"1796118737063575553","userId":"1796118737042604035","registerIp":"119.123.72.209","birthday":"1993-01-01 00:00","qq":null,"weChat":null,"sign":null,"age":32,"tall":184,"weight":56000,"deleted":"0","gender":"","createTime":"2024-05-30 17:57","updateTime":"2024-05-30 17:57"}}
+2025-06-12 15:56:02.496 BMLaunchViewController.swift checkNetworkAuthStatus() [Line 172] Verbose: 已授权访问网络
+2025-06-12 15:56:02.611 BaseViewController.swift deinit [Line 140] Verbose: 销毁 BMLaunchViewController,0x0000000105072b40
+2025-06-12 15:56:02.611 BaseView.swift deinit [Line 32] Verbose: deinit BaseView
+2025-06-12 15:56:02.617 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/app/application/new-version?currentVersionCode=11000&id=1796118737042604035
+2025-06-12 15:56:02.617 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:02.617 Request.swift adaptHandler [Line 38] Debug: ["app-id": "80_JsWgHTvEdZf5dAe5owyr", "sob-token": "b67f9914e1904771b62b31306e9b5034", "appId": "80_JsWgHTvEdZf5dAe5owyr"]
+2025-06-12 15:56:02.764 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"当前已经是最新版本","code":20006,"data":null}
+2025-06-12 15:56:02.827 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/app/application/new-version?currentVersionCode=11000&id=1796118737042604035
+2025-06-12 15:56:02.827 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:02.827 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"当前已经是最新版本","code":20006,"data":null}
+2025-06-12 15:56:02.828 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/uc/token
+2025-06-12 15:56:02.828 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:02.828 Request.swift adaptHandler [Line 38] Debug: ["app-id": "80_JsWgHTvEdZf5dAe5owyr", "sob-token": "b67f9914e1904771b62b31306e9b5034", "appId": "80_JsWgHTvEdZf5dAe5owyr"]
+2025-06-12 15:56:02.878 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"账号已登录","code":20000,"data":{"id":"1796118737042604035","avatar":"https://u-oss.thisiot.com/images/2025_01_14/1879019986452283393.jpg","userName":"22","createTime":"2024-05-30 17:57","regIp":null,"loginIp":null,"phone":"134*****445","token":"b67f9914e1904771b62b31306e9b5034","status":"1","roleId":null,"roleName":null,"companyId":null,"companyName":null,"menuVersion":null,"gender":"","vip":false,"verify":false}}
+2025-06-12 15:56:02.879 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/uc/token
+2025-06-12 15:56:02.879 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:02.879 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"账号已登录","code":20000,"data":{"id":"1796118737042604035","avatar":"https://u-oss.thisiot.com/images/2025_01_14/1879019986452283393.jpg","userName":"22","createTime":"2024-05-30 17:57","regIp":null,"loginIp":null,"phone":"134*****445","token":"b67f9914e1904771b62b31306e9b5034","status":"1","roleId":null,"roleName":null,"companyId":null,"companyName":null,"menuVersion":null,"gender":"","vip":false,"verify":false}}
+2025-06-12 15:56:02.880 BMNetwork.swift fetchUserInfo(completionHandler:) [Line 105] Verbose: success
+2025-06-12 15:56:02.880 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/uc/user-info
+2025-06-12 15:56:02.881 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:02.881 Request.swift adaptHandler [Line 38] Debug: ["app-id": "80_JsWgHTvEdZf5dAe5owyr", "sob-token": "b67f9914e1904771b62b31306e9b5034", "appId": "80_JsWgHTvEdZf5dAe5owyr"]
+2025-06-12 15:56:02.931 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"获取用户信息成功.","code":20000,"data":{"id":"1796118737063575553","userId":"1796118737042604035","registerIp":"119.123.72.209","birthday":"1993-01-01 00:00","qq":null,"weChat":null,"sign":null,"age":32,"tall":184,"weight":56000,"deleted":"0","gender":"","createTime":"2024-05-30 17:57","updateTime":"2024-05-30 17:57"}}
+2025-06-12 15:56:02.932 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/uc/user-info
+2025-06-12 15:56:02.932 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:02.933 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"获取用户信息成功.","code":20000,"data":{"id":"1796118737063575553","userId":"1796118737042604035","registerIp":"119.123.72.209","birthday":"1993-01-01 00:00","qq":null,"weChat":null,"sign":null,"age":32,"tall":184,"weight":56000,"deleted":"0","gender":"","createTime":"2024-05-30 17:57","updateTime":"2024-05-30 17:57"}}
+Animation Duration:  0.42807793617248535
+2025-06-12 15:56:03.045 BaseViewController.swift deinit [Line 140] Verbose: 销毁 BMSportViewController,0x000000010d20a800
+2025-06-12 15:56:03.045 BaseView.swift deinit [Line 32] Verbose: deinit BMSportTabView
+2025-06-12 15:56:03.045 BaseView.swift deinit [Line 32] Verbose: deinit BMOutIndoorTabView
+2025-06-12 15:56:03.046 BaseViewController.swift deinit [Line 140] Verbose: 销毁 BMDeviceViewController,0x000000010d208f00
+2025-06-12 15:56:03.047 BaseView.swift deinit [Line 32] Verbose: deinit BMConnectDeviceView
+2025-06-12 15:56:03.047 BaseView.swift deinit [Line 32] Verbose: deinit BMAddSheetView
+2025-06-12 15:56:03.048 BaseViewController.swift deinit [Line 140] Verbose: 销毁 BMDiscoveryViewController,0x000000010d208a00
+2025-06-12 15:56:03.048 BaseView.swift deinit [Line 32] Verbose: deinit BMDiscoveryTabView
+2025-06-12 15:56:03.048 BaseView.swift deinit [Line 32] Verbose: deinit BMCurrentWeatherView
+2025-06-12 15:56:03.048 BaseView.swift deinit [Line 32] Verbose: deinit BMTemperatureLabel
+2025-06-12 15:56:03.048 BaseViewController.swift deinit [Line 140] Verbose: 销毁 BMMyViewController,0x000000010d20a300
+2025-06-12 15:56:03.048 BaseView.swift deinit [Line 32] Verbose: deinit BMUserInfoView
+2025-06-12 15:56:03.048 BaseView.swift deinit [Line 32] Verbose: deinit BMVerticalLabel
+2025-06-12 15:56:03.048 BaseView.swift deinit [Line 32] Verbose: deinit BMVerticalLabel
+2025-06-12 15:56:03.048 BaseView.swift deinit [Line 32] Verbose: deinit BMVerticalLabel
+2025-06-12 15:56:03.049 BaseView.swift deinit [Line 32] Verbose: deinit BMTabBarButton
+2025-06-12 15:56:03.049 BaseViewController.swift deinit [Line 140] Verbose: 销毁 BMHealthViewController,0x000000010d208500
+2025-06-12 15:56:03.049 BaseView.swift deinit [Line 32] Verbose: deinit BMHealthDataView
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMSleepView
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMVerticalLabel
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMVerticalLabel
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMVerticalLabel
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMPhysicalTrainingView
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMPhysicalItemView
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMPhysicalItemView
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMPhysicalItemView
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMTodayGoalItemView
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMGoalItemView
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMGoalItemView
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMGoalItemView
+2025-06-12 15:56:03.050 BaseView.swift deinit [Line 32] Verbose: deinit BMAddSheetView
+2025-06-12 15:56:03.051 BaseView.swift deinit [Line 32] Verbose: deinit BMDeviceStateView
+Animation Duration:  0.6489520072937012
+2025-06-12 15:56:06.754 BMHealthViewController.swift viewDidLoad() [Line 92] Verbose: 去绑定设备
+2025-06-12 15:56:06.755 BaseView.swift deinit [Line 32] Verbose: deinit BaseView
+2025-06-12 15:56:07.291 UBManager.swift startScan(_:) [Line 224] Bluetooth: 开始扫描
+2025-06-12 15:56:07.298 UBIOTManager.swift startScan(_:) [Line 69] Verbose: 开始扫描 []
+2025-06-12 15:56:07.298 [IOTBluetooth-116]: 开始扫描蓝牙设备...
+2025-06-12 15:56:07.312 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/dev/device/bt/list
+2025-06-12 15:56:07.313 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:07.313 Request.swift adaptHandler [Line 38] Debug: ["appId": "80_JsWgHTvEdZf5dAe5owyr", "app-id": "80_JsWgHTvEdZf5dAe5owyr", "sob-token": "b67f9914e1904771b62b31306e9b5034"]
+2025-06-12 15:56:07.514 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"获取设备列表成功.","code":20000,"data":[{"id":"1834629381672730627","productId":"1802518141592993793","deviceId":"2811060100AA","nickName":"FD230","avatar":null,"companyId":"1745742088258519041","version":null,"state":"0","managerId":"1796118737042604035","battery":null,"si":null,"importRecordId":"1834629381626593282","createTime":"2024-09-14 00:25","updateTime":"2024-09-14 00:25","locationMode":null,"position":null,"address":null,"location":null,"firstUser":null,"secondUser":null,"image":"https://u-oss.thisiot.com/images/2025_05_27/1927278471850143746.png"}]}
+2025-06-12 15:56:07.515 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/dev/device/bt/list
+2025-06-12 15:56:07.515 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:07.515 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"获取设备列表成功.","code":20000,"data":[{"id":"1834629381672730627","productId":"1802518141592993793","deviceId":"2811060100AA","nickName":"FD230","avatar":null,"companyId":"1745742088258519041","version":null,"state":"0","managerId":"1796118737042604035","battery":null,"si":null,"importRecordId":"1834629381626593282","createTime":"2024-09-14 00:25","updateTime":"2024-09-14 00:25","locationMode":null,"position":null,"address":null,"location":null,"firstUser":null,"secondUser":null,"image":"https://u-oss.thisiot.com/images/2025_05_27/1927278471850143746.png"}]}
+2025-06-12 15:56:07.544 UBIOTManager.swift startScan(_:) [Line 83] Bluetooth: find WATCH Soar 009B B4F1FA9B-6584-6DBD-972A-E8574D274C37 28:11:06:01:00:9B
+2025-06-12 15:56:07.545 BMNearbyDeivceViewController.swift startScan() [Line 161] Verbose: find WATCH Soar 009B, 28:11:06:01:00:9B
+2025-06-12 15:56:07.545 UBIOTManager.swift startScan(_:) [Line 77] Bluetooth: update WATCH Soar 009B B4F1FA9B-6584-6DBD-972A-E8574D274C37 28:11:06:01:00:9B
+2025-06-12 15:56:08.220 UBIOTManager.swift startScan(_:) [Line 83] Bluetooth: find WATCH Soar 0086 21F9DA4A-6B0A-4C9E-64E9-40CBB4689B13 28:11:06:01:00:86
+2025-06-12 15:56:08.221 BMNearbyDeivceViewController.swift startScan() [Line 161] Verbose: find WATCH Soar 0086, 28:11:06:01:00:86
+2025-06-12 15:56:09.231 UBIOTManager.swift startScan(_:) [Line 77] Bluetooth: update WATCH Soar 0086 21F9DA4A-6B0A-4C9E-64E9-40CBB4689B13 28:11:06:01:00:86
+2025-06-12 15:56:09.646 UBIOTManager.swift startScan(_:) [Line 83] Bluetooth: find KUMI U6 0065 C9B10E30-30A6-60CB-47D6-58735684935B FD:24:20:00:00:65
+2025-06-12 15:56:09.647 BMNearbyDeivceViewController.swift startScan() [Line 161] Verbose: find KUMI U6 0065, FD:24:20:00:00:65
+2025-06-12 15:56:09.648 UBIOTManager.swift startScan(_:) [Line 77] Bluetooth: update KUMI U6 0065 C9B10E30-30A6-60CB-47D6-58735684935B FD:24:20:00:00:65
+2025-06-12 15:56:09.882 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/dev/bind?mac=28:11:06:01:00:86
+2025-06-12 15:56:09.884 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:09.884 Request.swift adaptHandler [Line 38] Debug: ["Content-Type": "application/x-www-form-urlencoded; charset=utf-8", "sob-token": "b67f9914e1904771b62b31306e9b5034", "appId": "80_JsWgHTvEdZf5dAe5owyr", "app-id": "80_JsWgHTvEdZf5dAe5owyr"]
+Animation Duration:  2.5712878704071045
+2025-06-12 15:56:10.054 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"设备绑定蓝牙成功.","code":20000,"data":"HS"}
+2025-06-12 15:56:10.055 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/dev/bind?mac=28:11:06:01:00:86
+2025-06-12 15:56:10.056 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:10.056 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"设备绑定蓝牙成功.","code":20000,"data":"HS"}
+2025-06-12 15:56:10.072 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/dev/product/profile?deviceId=28:11:06:01:00:86
+2025-06-12 15:56:10.073 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:10.074 Request.swift adaptHandler [Line 38] Debug: ["sob-token": "b67f9914e1904771b62b31306e9b5034", "app-id": "80_JsWgHTvEdZf5dAe5owyr", "appId": "80_JsWgHTvEdZf5dAe5owyr"]
+2025-06-12 15:56:10.133 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"获取设备所属产品成功.","code":20000,"data":{"id":"1802518141592993793","companyId":"1745742088258519041","name":"FD230","image":"https://u-oss.thisiot.com/images/2025_05_27/1927278471850143746.png","os":"Rtos","screen":"300x300","screenType":"0","ram":"","rom":"","cpu":"","protocolId":"1737094811635343362","description":"FD240/241","chatEnable":"1","videoCallEnable":"1","deleted":"0","createTime":"2024-06-17 09:46","updateTime":"2024-06-17 09:46","companyName":null,"protocolLabel":null,"cid":"HS","cidId":"1907358139050725378"}}
+2025-06-12 15:56:10.133 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/dev/product/profile?deviceId=28:11:06:01:00:86
+2025-06-12 15:56:10.134 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:10.134 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"获取设备所属产品成功.","code":20000,"data":{"id":"1802518141592993793","companyId":"1745742088258519041","name":"FD230","image":"https://u-oss.thisiot.com/images/2025_05_27/1927278471850143746.png","os":"Rtos","screen":"300x300","screenType":"0","ram":"","rom":"","cpu":"","protocolId":"1737094811635343362","description":"FD240/241","chatEnable":"1","videoCallEnable":"1","deleted":"0","createTime":"2024-06-17 09:46","updateTime":"2024-06-17 09:46","companyName":null,"protocolLabel":null,"cid":"HS","cidId":"1907358139050725378"}}
+2025-06-12 15:56:10.134 BMConnectDeivceViewController.swift connect() [Line 72] Verbose: 1745742088258519041 HS
+2025-06-12 15:56:10.134 UBIOTManager.swift connect(_:completion:) [Line 115] Bluetooth: WATCH Soar 0086 正在连接...
+2025-06-12 15:56:10.599 UBIOTManager.swift startScan(_:) [Line 83] Bluetooth: find WATCH Soar 0111 8636CDAD-5277-D948-BE46-A445B34B6459 28:11:06:01:01:11
+2025-06-12 15:56:10.601 BMNearbyDeivceViewController.swift startScan() [Line 161] Verbose: find WATCH Soar 0111, 28:11:06:01:01:11
+2025-06-12 15:56:10.601 UBIOTManager.swift startScan(_:) [Line 77] Bluetooth: update WATCH Soar 0111 8636CDAD-5277-D948-BE46-A445B34B6459 28:11:06:01:01:11
+2025-06-12 15:56:10.751 [IOTBluetooth-236]: 已连接 WATCH Soar 0086
+2025-06-12 15:56:12.293 [IOTBluetooth-334]: [receive] 2AE2 5772000103722811060100860000050500010001
+2025-06-12 15:56:12.294 [IOTBluetooth-074]: 57 72 00 01 03 72 28 11 06 01 00 86 00 00 05 05 00 01 00 01
+2025-06-12 15:56:12.313 [IOTBluetooth-408]: {"tp":1,"pn":"iphone","mac":[20,209,158,71,129,27]}
+2025-06-12 15:56:12.314 [IOTBluetooth-156]: 2AE4 Write: 73021001000000330000000100000033007b227470223a312c22706e223a226970686f6e65222c226d6163223a5b32302c3230392c3135382c37312c3132392c32375d7daf Bytes(69)
+2025-06-12 15:56:12.382 [IOTBluetooth-334]: [receive] 2AE5 720210010000000100000001000000010001ff
+2025-06-12 15:56:12.382 [IOTBluetooth-069]: total = 1,receive = 1
+2025-06-12 15:56:12.392 [IOTBluetooth-116]: IBResponse(code: 1000,isSuccess: true, massage:手表未与任何手机绑定, value:1)
+2025-06-12 15:56:12.392 [IOTBluetooth-131]: 等待手表同意连接
+2025-06-12 15:56:12.397 [IOTBluetooth-326]: didUpdateValueFor error Error Domain=CBATTErrorDomain Code=2 "Reading is not permitted." UserInfo={NSLocalizedDescription=Reading is not permitted.}
+tcp_input [C8.1.1:2] flags=[R.] seq=0, ack=4027962016, win=0 state=SYN_SENT rcv_nxt=0, snd_una=4027962015
+2025-06-12 15:56:12.473 [IOTBluetooth-334]: [receive] 2AE7 0000
+nw_endpoint_flow_failed_with_error [C8.1.1 2406:d440:30c:8301:4c26:77fc:2c14:ef94.80 in_progress channel-flow (satisfied (Path is satisfied), viable, interface: pdp_ip0[nr_sa_sub6], ipv4, ipv6, dns, expensive, uses cell)] already failing, returning
+2025-06-12 15:56:12.534 [IOTBluetooth-334]: [receive] 1001 
+2025-06-12 15:56:12.624 [IOTBluetooth-345]: 2AE4 write success
+2025-06-12 15:56:12.625 [IOTBluetooth-334]: [receive] 2AE5 720210010000000100000001000000010001ff
+2025-06-12 15:56:12.625 [IOTBluetooth-069]: total = 1,receive = 1
+error in connection_block_invoke_2: Connection invalid
+2025-06-12 15:56:14.903 [IOTBluetooth-334]: [receive] 2AE5 720511010000000100000001000000010001ff
+2025-06-12 15:56:14.903 [IOTBluetooth-069]: total = 1,receive = 1
+2025-06-12 15:56:14.903 [IOTBluetooth-016]: 收到确认配对消息: 确认配对
+2025-06-12 15:56:14.904 [IOTBluetooth-101]: 通知消息
+nw_path_necp_check_for_updates Failed to copy updated result (22)
+tcp_input [C13.1.1:3] flags=[R] seq=327350647, ack=2076414319, win=0 state=LAST_ACK rcv_nxt=327350647, snd_una=1255190175
+tcp_input [C13.1.1:3] flags=[R] seq=327350647, ack=2076414319, win=0 state=CLOSED rcv_nxt=327350647, snd_una=1255190175
+tcp_input [C13.1.1:3] flags=[R] seq=327350647, ack=2076414319, win=0 state=CLOSED rcv_nxt=327350647, snd_una=1255190175
+2025-06-12 15:56:17.050 UBIOTManager.swift startScan(_:) [Line 83] Bluetooth: find WATCH Soar 0072 CD05098D-B96E-5F63-C4AC-13C5753DA4B4 28:11:06:01:00:72
+2025-06-12 15:56:17.052 BMNearbyDeivceViewController.swift startScan() [Line 161] Verbose: find WATCH Soar 0072, 28:11:06:01:00:72
+tcp_input [C14.1.1:3] flags=[R] seq=678742307, ack=1853057773, win=0 state=LAST_ACK rcv_nxt=678742307, snd_una=3602976754
+tcp_input [C14.1.1:3] flags=[R] seq=678742307, ack=1853057773, win=0 state=CLOSED rcv_nxt=678742307, snd_una=3602976754
+2025-06-12 15:56:17.902 [IOTBluetooth-334]: [receive] 2AE5 72051001000000070000000100000007000114d19e47811b99
+2025-06-12 15:56:17.902 [IOTBluetooth-069]: total = 7,receive = 7
+2025-06-12 15:56:17.908 [IOTBluetooth-036]: 收到配对成功消息 [20, 209, 158, 71, 129, 27]
+2025-06-12 15:56:17.915 [IOTBluetooth-417]: {"minute":56,"hour":15,"week":4,"second":17,"day":12,"year":25,"month":6,"time":1749714977}
+2025-06-12 15:56:17.916 [IOTBluetooth-156]: 2AE4 Write: 730202010000005b000000010000005b007b226d696e757465223a35362c22686f7572223a31352c227765656b223a342c227365636f6e64223a31372c22646179223a31322c2279656172223a32352c226d6f6e7468223a362c2274696d65223a313734393731343937377d23 Bytes(109)
+2025-06-12 15:56:17.916 [IOTBluetooth-101]: 通知消息
+2025-06-12 15:56:17.993 [IOTBluetooth-345]: 2AE4 write success
+2025-06-12 15:56:18.262 [IOTBluetooth-334]: [receive] 2AE5 720202010000000100000001000000010001ff
+2025-06-12 15:56:18.263 [IOTBluetooth-069]: total = 1,receive = 1
+2025-06-12 15:56:18.263 [IOTBluetooth-067]: IBResponse(code: 1000,isSuccess: true, massage:操作成功, items:[])
+2025-06-12 15:56:18.264 [IOTBluetooth-062]: 1
+2025-06-12 15:56:18.264 [IOTBluetooth-156]: 1002 Write: 730901010000000100000001000000010001ff Bytes(19)
+2025-06-12 15:56:18.265 UBIOTManager.swift connect(_:completion:) [Line 128] Bluetooth: 已连接 WATCH Soar 0086 28:11:06:01:00:86
+2025-06-12 15:56:18.288 BMConnectDeivceViewController.swift blueConnect() [Line 101] Verbose: 连接成功 true
+2025-06-12 15:56:18.289 UBOfflineChecker.swift enableOfflineCheck() [Line 53] Bluetooth: 启动掉线检测...
+2025-06-12 15:56:18.297 [IOTBluetooth-137]: 停止扫描蓝牙设备...
+2025-06-12 15:56:18.298 [IOTBluetooth-062]: 0
+2025-06-12 15:56:18.299 [IOTBluetooth-156]: 2AE3 Write: 73014601000000010000000100000001000000 Bytes(19)
+2025-06-12 15:56:18.299 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/dev/device/nickname/28:11:06:01:00:86?nickname=WATCH Soar 0086
+2025-06-12 15:56:18.299 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:18.300 Request.swift adaptHandler [Line 38] Debug: ["sob-token": "b67f9914e1904771b62b31306e9b5034", "app-id": "80_JsWgHTvEdZf5dAe5owyr", "appId": "80_JsWgHTvEdZf5dAe5owyr", "Content-Type": "application/x-www-form-urlencoded; charset=utf-8"]
+2025-06-12 15:56:18.304 UBManager.swift stopScan() [Line 242] Bluetooth: 扫描结束
+API MISUSE: <CBCentralManager: 0x10d3079c0> can only accept this command while in the powered on state
+2025-06-12 15:56:18.305 [IOTBluetooth-137]: 停止扫描蓝牙设备...
+2025-06-12 15:56:18.305 BaseViewController.swift deinit [Line 140] Verbose: 销毁 BMNearbyDeivceViewController,0x0000000129130f00
+2025-06-12 15:56:18.306 BaseView.swift deinit [Line 32] Verbose: deinit BaseView
+2025-06-12 15:56:18.306 BaseView.swift deinit [Line 32] Verbose: deinit BaseView
+2025-06-12 15:56:18.306 BaseView.swift deinit [Line 32] Verbose: deinit BaseView
+2025-06-12 15:56:18.307 BaseView.swift deinit [Line 32] Verbose: deinit BaseView
+2025-06-12 15:56:18.311 BaseViewController.swift deinit [Line 140] Verbose: 销毁 BMConnectDeivceViewController,0x0000000129132d00
+2025-06-12 15:56:18.315 BaseView.swift deinit [Line 32] Verbose: deinit BMConnectingAnimationView
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+2025-06-12 15:56:18.387 [IOTBluetooth-345]: 1002 write success
+2025-06-12 15:56:18.393 UBBluetooth.swift centralManagerDidUpdateState(_:) [Line 137] Debug: poweredOn
+2025-06-12 15:56:18.427 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:18.428 [IOTBluetooth-334]: [receive] 1001 3133
+2025-06-12 15:56:18.428 [IOTBluetooth-074]: 31 33
+2025-06-12 15:56:18.428 [IOTBluetooth-334]: [receive] 2AE5 720146010000000000000001000000000000
+2025-06-12 15:56:18.428 [IOTBluetooth-069]: total = 0,receive = 0
+2025-06-12 15:56:18.430 BMHealthViewController.swift refresh() [Line 273] Verbose: [] 操作成功 true
+2025-06-12 15:56:18.531 [IOTBluetooth-417]: {"minute":56,"hour":15,"year":25,"day":12,"month":6,"week":4,"second":18,"time":1749714978}
+2025-06-12 15:56:18.531 [IOTBluetooth-156]: 2AE4 Write: 730202010000005b000000010000005b007b226d696e757465223a35362c22686f7572223a31352c2279656172223a32352c22646179223a31322c226d6f6e7468223a362c227765656b223a342c227365636f6e64223a31382c2274696d65223a313734393731343937387d21 Bytes(109)
+2025-06-12 15:56:18.540 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"更新设备昵称成功.","code":20000,"data":null}
+2025-06-12 15:56:18.540 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/dev/device/nickname/28:11:06:01:00:86?nickname=WATCH%20Soar%200086
+2025-06-12 15:56:18.540 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:18.540 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"更新设备昵称成功.","code":20000,"data":null}
+2025-06-12 15:56:18.623 [IOTBluetooth-345]: 2AE4 write success
+2025-06-12 15:56:18.623 [IOTBluetooth-334]: [receive] 2AE5 720202010000000100000001000000010001ff
+2025-06-12 15:56:18.624 [IOTBluetooth-069]: total = 1,receive = 1
+2025-06-12 15:56:18.624 BMHealthViewController.swift refresh() [Line 222] Verbose: 发送时间至手表完成
+tcp_input [C16.1.1:3] flags=[R] seq=633817133, ack=2347131405, win=0 state=LAST_ACK rcv_nxt=633817133, snd_una=373135052
+tcp_input [C16.1.1:3] flags=[R] seq=633817133, ack=2347131405, win=0 state=CLOSED rcv_nxt=633817133, snd_una=373135052
+2025-06-12 15:56:18.726 [IOTBluetooth-062]: 0
+2025-06-12 15:56:18.726 [IOTBluetooth-156]: 2AE3 Write: 73014401000000010000000100000001000000 Bytes(19)
+2025-06-12 15:56:18.773 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:18.773 [IOTBluetooth-334]: [receive] 2AE5 720144010000000000000001000000000000
+2025-06-12 15:56:18.773 [IOTBluetooth-069]: total = 0,receive = 0
+2025-06-12 15:56:18.774 BMHealthViewController.swift refresh() [Line 259] Verbose: [] 操作成功 true
+2025-06-12 15:56:18.876 [IOTBluetooth-062]: 0
+2025-06-12 15:56:18.876 [IOTBluetooth-156]: 2AE3 Write: 73014701000000010000000100000001000000 Bytes(19)
+2025-06-12 15:56:18.923 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:18.923 [IOTBluetooth-334]: [receive] 2AE5 720147010000000000000001000000000000
+2025-06-12 15:56:18.924 [IOTBluetooth-069]: total = 0,receive = 0
+2025-06-12 15:56:18.926 BMHealthViewController.swift refresh() [Line 238] Verbose: [] 操作成功 true
+2025-06-12 15:56:19.062 [IOTBluetooth-062]: 0
+2025-06-12 15:56:19.063 [IOTBluetooth-156]: 2AE3 Write: 73014301000000010000000100000001000000 Bytes(19)
+2025-06-12 15:56:19.068 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/dev/product/profile?deviceId=28:11:06:01:00:86
+2025-06-12 15:56:19.069 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:19.070 Request.swift adaptHandler [Line 38] Debug: ["sob-token": "b67f9914e1904771b62b31306e9b5034", "app-id": "80_JsWgHTvEdZf5dAe5owyr", "appId": "80_JsWgHTvEdZf5dAe5owyr"]
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+CUICatalog: Invalid asset name supplied: ''
+2025-06-12 15:56:19.147 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"获取设备所属产品成功.","code":20000,"data":{"id":"1802518141592993793","companyId":"1745742088258519041","name":"FD230","image":"https://u-oss.thisiot.com/images/2025_05_27/1927278471850143746.png","os":"Rtos","screen":"300x300","screenType":"0","ram":"","rom":"","cpu":"","protocolId":"1737094811635343362","description":"FD240/241","chatEnable":"1","videoCallEnable":"1","deleted":"0","createTime":"2024-06-17 09:46","updateTime":"2024-06-17 09:46","companyName":null,"protocolLabel":null,"cid":"HS","cidId":"1907358139050725378"}}
+2025-06-12 15:56:19.148 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/dev/product/profile?deviceId=28:11:06:01:00:86
+2025-06-12 15:56:19.148 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:19.149 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"获取设备所属产品成功.","code":20000,"data":{"id":"1802518141592993793","companyId":"1745742088258519041","name":"FD230","image":"https://u-oss.thisiot.com/images/2025_05_27/1927278471850143746.png","os":"Rtos","screen":"300x300","screenType":"0","ram":"","rom":"","cpu":"","protocolId":"1737094811635343362","description":"FD240/241","chatEnable":"1","videoCallEnable":"1","deleted":"0","createTime":"2024-06-17 09:46","updateTime":"2024-06-17 09:46","companyName":null,"protocolLabel":null,"cid":"HS","cidId":"1907358139050725378"}}
+2025-06-12 15:56:19.162 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:19.164 [IOTBluetooth-334]: [receive] 2AE5 720143010000000000000001000000000000
+2025-06-12 15:56:19.164 [IOTBluetooth-069]: total = 0,receive = 0
+2025-06-12 15:56:19.266 [IOTBluetooth-062]: 0
+2025-06-12 15:56:19.267 [IOTBluetooth-156]: 2AE3 Write: 73014001000000010000000100000001000000 Bytes(19)
+2025-06-12 15:56:19.373 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:19.373 [IOTBluetooth-334]: [receive] 2AE5 720140010000000000000001000000000000
+2025-06-12 15:56:19.373 [IOTBluetooth-069]: total = 0,receive = 0
+2025-06-12 15:56:19.475 [IOTBluetooth-062]: 0
+2025-06-12 15:56:19.475 [IOTBluetooth-156]: 2AE3 Write: 73014101000000010000000100000001000000 Bytes(19)
+2025-06-12 15:56:19.553 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:19.612 [IOTBluetooth-334]: [receive] 2AE5 720141010000000000000001000000000000
+2025-06-12 15:56:19.613 [IOTBluetooth-069]: total = 0,receive = 0
+2025-06-12 15:56:19.715 [IOTBluetooth-156]: 2AE3 Write: 73012b010000000000000001000000000000 Bytes(18)
+2025-06-12 15:56:19.762 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:19.765 [IOTBluetooth-334]: [receive] 2AE5 72012b01000000070000000100000007008813000001010162
+2025-06-12 15:56:19.765 [IOTBluetooth-069]: total = 7,receive = 7
+2025-06-12 15:56:19.765 [IOTBluetooth-369]: IBTargetStep(value: 5000, ring:1, vibrate: 1, notice:1)
+2025-06-12 15:56:19.897 BMSyncManager.swift syncTrainRecord() [Line 46] Verbose: 同步训练记录,dateID 0
+Animation Duration:  2.86102294921875e-06
+2025-06-12 15:56:19.898 [IOTBluetooth-062]: 0
+2025-06-12 15:56:19.898 [IOTBluetooth-156]: 2AE3 Write: 73014901000000010000000100000001000000 Bytes(19)
+2025-06-12 15:56:20.003 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:20.004 [IOTBluetooth-334]: [receive] 2AE5 720149010000000b000000010000000b007b2272656373223a5b5d7d25
+2025-06-12 15:56:20.004 [IOTBluetooth-069]: total = 11,receive = 11
+2025-06-12 15:56:20.017 BMSyncManager.swift syncHeartRate() [Line 98] Verbose: 同步心率历史记录,dateID 0
+2025-06-12 15:56:20.017 [IOTBluetooth-062]: 0
+2025-06-12 15:56:20.018 [IOTBluetooth-156]: 2AE3 Write: 73014001000000010000000100000001000000 Bytes(19)
+2025-06-12 15:56:20.093 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:20.093 [IOTBluetooth-334]: [receive] 2AE5 720140010000000000000001000000000000
+2025-06-12 15:56:20.093 [IOTBluetooth-069]: total = 0,receive = 0
+2025-06-12 15:56:20.094 BMSyncManager.swift syncBloodOxygen() [Line 132] Verbose: 同步血氧历史记录,dateID 0
+2025-06-12 15:56:20.094 [IOTBluetooth-062]: 0
+2025-06-12 15:56:20.094 [IOTBluetooth-156]: 2AE3 Write: 73014101000000010000000100000001000000 Bytes(19)
+2025-06-12 15:56:20.214 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:20.215 [IOTBluetooth-334]: [receive] 2AE5 720141010000000000000001000000000000
+2025-06-12 15:56:20.215 [IOTBluetooth-069]: total = 0,receive = 0
+2025-06-12 15:56:20.215 BMSyncManager.swift syncStep() [Line 166] Verbose: 同步步数历史记录,dateID 0
+2025-06-12 15:56:20.216 [IOTBluetooth-062]: 0
+2025-06-12 15:56:20.216 [IOTBluetooth-156]: 2AE3 Write: 73014301000000010000000100000001000000 Bytes(19)
+2025-06-12 15:56:20.335 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:20.336 [IOTBluetooth-334]: [receive] 2AE5 720143010000000000000001000000000000
+2025-06-12 15:56:20.336 [IOTBluetooth-069]: total = 0,receive = 0
+2025-06-12 15:56:20.337 BMSyncManager.swift syncSleepRecord() [Line 199] Verbose: 同步睡眠历史记录,dateID 0
+2025-06-12 15:56:20.338 [IOTBluetooth-062]: 0
+2025-06-12 15:56:20.338 [IOTBluetooth-156]: 2AE3 Write: 73014b01000000010000000100000001000000 Bytes(19)
+2025-06-12 15:56:20.424 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:20.424 [IOTBluetooth-334]: [receive] 2AE5 72014b010000000000000001000000000000
+2025-06-12 15:56:20.425 [IOTBluetooth-069]: total = 0,receive = 0
+2025-06-12 15:56:20.457 BMHealthViewController.swift onRefreshDone() [Line 426] Verbose: 刷新完成
+tcp_input [C17.1.1:3] flags=[R] seq=987054189, ack=3414956835, win=0 state=LAST_ACK rcv_nxt=987054189, snd_una=2488913448
+tcp_input [C17.1.1:3] flags=[R] seq=987054189, ack=3414956835, win=0 state=CLOSED rcv_nxt=987054189, snd_una=2488913448
+2025-06-12 15:56:23.045 BaseView.swift deinit [Line 32] Verbose: deinit BMFlatTabView
+2025-06-12 15:56:26.075 BMWatchViewController.swift viewDidLoad() [Line 58] Verbose: [0, 5]
+2025-06-12 15:56:26.613 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/dev/product/profile?deviceId=28:11:06:01:00:86
+2025-06-12 15:56:26.614 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:26.614 Request.swift adaptHandler [Line 38] Debug: ["appId": "80_JsWgHTvEdZf5dAe5owyr", "app-id": "80_JsWgHTvEdZf5dAe5owyr", "sob-token": "b67f9914e1904771b62b31306e9b5034"]
+2025-06-12 15:56:26.621 [IOTBluetooth-156]: 2AE3 Write: 730103010000000000000001000000000000 Bytes(18)
+2025-06-12 15:56:26.694 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 15:56:26.695 [IOTBluetooth-334]: [receive] 2AE5 72010301000000490000000100000049007b22636f6465223a312c226d616a6f72223a312c226d6964223a332c226d696e6f72223a3131342c226d616341646472657373223a2232383a31313a30363a30313a30303a3836227de6
+2025-06-12 15:56:26.695 [IOTBluetooth-069]: total = 73,receive = 73
+2025-06-12 15:56:26.710 [IOTBluetooth-312]: {"macAddress":"28:11:06:01:00:86","code":1,"mid":3,"major":1,"minor":114}
+2025-06-12 15:56:26.723 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/ota/task?sourceVersion=1.3.114&deviceId=28:11:06:01:00:86
+2025-06-12 15:56:26.723 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 15:56:26.724 Request.swift adaptHandler [Line 38] Debug: ["appId": "80_JsWgHTvEdZf5dAe5owyr", "app-id": "80_JsWgHTvEdZf5dAe5owyr", "sob-token": "b67f9914e1904771b62b31306e9b5034"]
+2025-06-12 15:56:26.817 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"获取设备所属产品成功.","code":20000,"data":{"id":"1802518141592993793","companyId":"1745742088258519041","name":"FD230","image":"https://u-oss.thisiot.com/images/2025_05_27/1927278471850143746.png","os":"Rtos","screen":"300x300","screenType":"0","ram":"","rom":"","cpu":"","protocolId":"1737094811635343362","description":"FD240/241","chatEnable":"1","videoCallEnable":"1","deleted":"0","createTime":"2024-06-17 09:46","updateTime":"2024-06-17 09:46","companyName":null,"protocolLabel":null,"cid":"HS","cidId":"1907358139050725378"}}
+2025-06-12 15:56:26.817 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/dev/product/profile?deviceId=28:11:06:01:00:86
+2025-06-12 15:56:26.817 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:26.817 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"获取设备所属产品成功.","code":20000,"data":{"id":"1802518141592993793","companyId":"1745742088258519041","name":"FD230","image":"https://u-oss.thisiot.com/images/2025_05_27/1927278471850143746.png","os":"Rtos","screen":"300x300","screenType":"0","ram":"","rom":"","cpu":"","protocolId":"1737094811635343362","description":"FD240/241","chatEnable":"1","videoCallEnable":"1","deleted":"0","createTime":"2024-06-17 09:46","updateTime":"2024-06-17 09:46","companyName":null,"protocolLabel":null,"cid":"HS","cidId":"1907358139050725378"}}
+2025-06-12 15:56:26.919 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"已是最新版本.","code":20006,"data":null}
+2025-06-12 15:56:26.919 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/ota/task?sourceVersion=1.3.114&deviceId=28:11:06:01:00:86
+2025-06-12 15:56:26.920 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 15:56:26.920 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"已是最新版本.","code":20006,"data":null}
+2025-06-12 15:56:26.920 BMActivityView.swift disposeTimer() [Line 85] Verbose: 销毁定时器
+Animation Duration:  1.2159347534179688e-05
+Animation Duration:  0.2958400249481201
+2025-06-12 15:56:46.922 BMActivityView.swift disposeTimer() [Line 85] Verbose: 销毁定时器
+2025-06-12 16:00:48.990 BaseViewController.swift deinit [Line 140] Verbose: 销毁 BMUpgradeViewController,0x000000011225c000
+2025-06-12 16:00:48.993 BaseView.swift deinit [Line 32] Verbose: deinit BMProgressView
+2025-06-12 16:00:49.504 BMWatchViewController.swift viewDidLoad() [Line 58] Verbose: [0, 5]
+2025-06-12 16:00:50.038 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/dev/product/profile?deviceId=28:11:06:01:00:86
+2025-06-12 16:00:50.039 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 16:00:50.040 Request.swift adaptHandler [Line 38] Debug: ["app-id": "80_JsWgHTvEdZf5dAe5owyr", "sob-token": "b67f9914e1904771b62b31306e9b5034", "appId": "80_JsWgHTvEdZf5dAe5owyr"]
+2025-06-12 16:00:50.041 [IOTBluetooth-156]: 2AE3 Write: 730103010000000000000001000000000000 Bytes(18)
+2025-06-12 16:00:50.130 [IOTBluetooth-345]: 2AE3 write success
+2025-06-12 16:00:50.131 [IOTBluetooth-334]: [receive] 2AE5 72010301000000490000000100000049007b22636f6465223a312c226d616a6f72223a312c226d6964223a332c226d696e6f72223a3131342c226d616341646472657373223a2232383a31313a30363a30313a30303a3836227de6
+2025-06-12 16:00:50.131 [IOTBluetooth-069]: total = 73,receive = 73
+2025-06-12 16:00:50.132 [IOTBluetooth-312]: {"code":1,"major":1,"mid":3,"minor":114,"macAddress":"28:11:06:01:00:86"}
+2025-06-12 16:00:50.134 BaseRequest.swift blendURL() [Line 252] Verbose: https://app.api.thisiot.com/ota/task?deviceId=28:11:06:01:00:86&sourceVersion=1.3.114
+2025-06-12 16:00:50.135 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 16:00:50.135 Request.swift adaptHandler [Line 38] Debug: ["appId": "80_JsWgHTvEdZf5dAe5owyr", "app-id": "80_JsWgHTvEdZf5dAe5owyr", "sob-token": "b67f9914e1904771b62b31306e9b5034"]
+2025-06-12 16:00:50.225 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"获取设备所属产品成功.","code":20000,"data":{"id":"1802518141592993793","companyId":"1745742088258519041","name":"FD230","image":"https://u-oss.thisiot.com/images/2025_05_27/1927278471850143746.png","os":"Rtos","screen":"300x300","screenType":"0","ram":"","rom":"","cpu":"","protocolId":"1737094811635343362","description":"FD240/241","chatEnable":"1","videoCallEnable":"1","deleted":"0","createTime":"2024-06-17 09:46","updateTime":"2024-06-17 09:46","companyName":null,"protocolLabel":null,"cid":"HS","cidId":"1907358139050725378"}}
+2025-06-12 16:00:50.226 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/dev/product/profile?deviceId=28:11:06:01:00:86
+2025-06-12 16:00:50.226 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 16:00:50.226 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"获取设备所属产品成功.","code":20000,"data":{"id":"1802518141592993793","companyId":"1745742088258519041","name":"FD230","image":"https://u-oss.thisiot.com/images/2025_05_27/1927278471850143746.png","os":"Rtos","screen":"300x300","screenType":"0","ram":"","rom":"","cpu":"","protocolId":"1737094811635343362","description":"FD240/241","chatEnable":"1","videoCallEnable":"1","deleted":"0","createTime":"2024-06-17 09:46","updateTime":"2024-06-17 09:46","companyName":null,"protocolLabel":null,"cid":"HS","cidId":"1907358139050725378"}}
+2025-06-12 16:00:50.356 Request.swift commonHandler(_:) [Line 91] Debug: {"success":true,"msg":"发现新版本.","code":20007,"data":{"updateId":"1927292450102480897","sourceVersion":"1.3.114","targetVersion":"1.3.115","updateType":"0","description":"ota_all_V1.3.112_20250303_151823_2_V1.3.118_20250527_162643\nota_all_V1.3.112_20250303_151823_2_V1.3.118_20250528_150518\nota_V1.3.112_20250303_151823_2_V1.3.118_20250528_171332\n升级包大小:4.63MB\n1,优化来电震动","packageId":"1927291942210015233","downloadFileVo":{"url":"http://r-oss.thisiot.com/device-ota/2025_05_28/1927658283940884482.fwpkg?Expires=1749718850&OSSAccessKeyId=LTAI5tJa2arDBmqSUsSTQJ1T&Signature=ykU6ZeQ24TJsm0qxNiUyfudnsrU%3D","md5":"8c82b0d7aebca6a643e9205df8f38b75","fileName":"ota_V1.3.112_20250303_151823_2_V1.3.118_20250528_171332.fwpkg","size":4862400}}}
+2025-06-12 16:00:50.357 BaseRequest.swift responseHandler [Line 216] Network: URL =>  https://app.api.thisiot.com/ota/task?deviceId=28:11:06:01:00:86&sourceVersion=1.3.114
+2025-06-12 16:00:50.357 BaseRequest.swift responseHandler [Line 217] Network: Body =>  
+2025-06-12 16:00:50.357 BaseRequest.swift responseHandler [Line 220] Network: response => {"success":true,"msg":"发现新版本.","code":20007,"data":{"updateId":"1927292450102480897","sourceVersion":"1.3.114","targetVersion":"1.3.115","updateType":"0","description":"ota_all_V1.3.112_20250303_151823_2_V1.3.118_20250527_162643\nota_all_V1.3.112_20250303_151823_2_V1.3.118_20250528_150518\nota_V1.3.112_20250303_151823_2_V1.3.118_20250528_171332\n升级包大小:4.63MB\n1,优化来电震动","packageId":"1927291942210015233","downloadFileVo":{"url":"http://r-oss.thisiot.com/device-ota/2025_05_28/1927658283940884482.fwpkg?Expires=1749718850&OSSAccessKeyId=LTAI5tJa2arDBmqSUsSTQJ1T&Signature=ykU6ZeQ24TJsm0qxNiUyfudnsrU%3D","md5":"8c82b0d7aebca6a643e9205df8f38b75","fileName":"ota_V1.3.112_20250303_151823_2_V1.3.118_20250528_171332.fwpkg","size":4862400}}}
+2025-06-12 16:00:50.357 BMActivityView.swift disposeTimer() [Line 85] Verbose: 销毁定时器
+Animation Duration:  3.0994415283203125e-06
+Animation Duration:  0.3205571174621582
+2025-06-12 16:01:10.359 BMActivityView.swift disposeTimer() [Line 85] Verbose: 销毁定时器
+2025-06-12 16:01:13.352 BMUpgradeViewController.swift onDownload() [Line 120] Verbose: http://r-oss.thisiot.com/device-ota/2025_05_28/1927658283940884482.fwpkg?Expires=1749718850&OSSAccessKeyId=LTAI5tJa2arDBmqSUsSTQJ1T&Signature=ykU6ZeQ24TJsm0qxNiUyfudnsrU%3D
+2025-06-12 16:01:13.353 BaseRequest.swift blendURL() [Line 252] Verbose: https://r-oss.thisiot.com/device-ota/2025_05_28/1927658283940884482.fwpkg?Expires=1749718850&OSSAccessKeyId=LTAI5tJa2arDBmqSUsSTQJ1T&Signature=ykU6ZeQ24TJsm0qxNiUyfudnsrU%3D
+2025-06-12 16:01:13.356 Request.swift adaptHandler [Line 37] Verbose: 适配请求
+2025-06-12 16:01:13.356 Request.swift adaptHandler [Line 38] Debug: ["appId": "80_JsWgHTvEdZf5dAe5owyr", "app-id": "80_JsWgHTvEdZf5dAe5owyr", "sob-token": "b67f9914e1904771b62b31306e9b5034"]
+2025-06-12 16:01:13.785 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.019531712734452124
+2025-06-12 16:01:13.794 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.03637935998683778
+2025-06-12 16:01:13.800 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.049857477788746295
+2025-06-12 16:01:13.804 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.06670512504113195
+2025-06-12 16:01:13.817 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.08018324284304047
+2025-06-12 16:01:13.838 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.09703089009542613
+2025-06-12 16:01:13.855 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.11050900789733464
+2025-06-12 16:01:13.857 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.13261270154656138
+2025-06-12 16:01:13.860 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.16293846660085554
+2025-06-12 16:01:13.872 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.1797861138532412
+2025-06-12 16:01:13.878 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.2235899967094439
+2025-06-12 16:01:13.883 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.24043764396182954
+2025-06-12 16:01:13.899 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.2539157617637381
+2025-06-12 16:01:13.900 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.28761105626850936
+2025-06-12 16:01:13.903 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.31119776242184927
+2025-06-12 16:01:13.908 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.33478446857518923
+2025-06-12 16:01:13.938 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.3482625863770977
+2025-06-12 16:01:13.945 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.3752188219809148
+2025-06-12 16:01:13.948 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.3920664692333004
+2025-06-12 16:01:13.949 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.41228364593616323
+2025-06-12 16:01:13.954 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.44260941099045736
+2025-06-12 16:01:13.959 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.45945705824284305
+2025-06-12 16:01:13.978 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.4796742349457058
+2025-06-12 16:01:13.981 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.5179845343863113
+2025-06-12 16:01:14.012 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.5379351760447516
+2025-06-12 16:01:14.039 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.5682609410990458
+2025-06-12 16:01:14.044 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.5884781178019085
+2025-06-12 16:01:14.045 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.6060949325435999
+2025-06-12 16:01:14.054 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.629815728858177
+2025-06-12 16:01:14.061 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.6445286278381046
+2025-06-12 16:01:14.066 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.6613762750904902
+2025-06-12 16:01:14.069 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.678223922342876
+2025-06-12 16:01:14.073 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.6950715695952616
+2025-06-12 16:01:14.074 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.7186582757486015
+2025-06-12 16:01:14.106 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.7456145113524185
+2025-06-12 16:01:14.112 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.7658316880552813
+2025-06-12 16:01:14.114 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.7927879236590983
+2025-06-12 16:01:14.118 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.8356630470549523
+2025-06-12 16:01:14.133 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.8491411648568609
+2025-06-12 16:01:14.139 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.8626192826587693
+2025-06-12 16:01:14.141 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.8963145771635407
+2025-06-12 16:01:14.143 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.9222721289897993
+2025-06-12 16:01:14.173 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.9458588351431392
+2025-06-12 16:01:14.175 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.9728150707469563
+2025-06-12 16:01:14.177 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 0.9896627179993419
+2025-06-12 16:01:14.179 BMUpgradeViewController.swift onDownload() [Line 128] Verbose: 1.0
+2025-06-12 16:01:14.194 BMUpgradeViewController.swift onDownload() [Line 140] Verbose: file:///private/var/mobile/Containers/Data/Application/F55E56C9-1AB7-4ABB-BBC2-81DBAC09CF0D/tmp/ota_V1.3.112_20250303_151823_2_V1.3.118_20250528_171332.fwpkg
+nw_resolver_start_query_timer_block_invoke [C22.1] Query fired: did not receive all answers in time for r-oss.thisiot.com:443
+2025-06-12 16:01:43.423 [IOTBluetooth-076]: deinit IBFileSender
+2025-06-12 16:01:43.423 BMUpgradeViewController.swift onUpgrade() [Line 155] Verbose: 更新固件
+2025-06-12 16:01:43.426 BMUpgradeViewController.swift onUpgrade() [Line 153] Verbose: 当前有文件正在传输中... false
\ No newline at end of file
diff --git a/Doc/最新/.~手表AI协议.docx b/Doc/最新/.~手表AI协议.docx
deleted file mode 100644 (file)
index ab7a7ee..0000000
Binary files "a/Doc/\346\234\200\346\226\260/.~\346\211\213\350\241\250AI\345\215\217\350\256\256.docx" and /dev/null differ
index 2d8b114..9049aee 100644 (file)
@@ -14,6 +14,7 @@ class LogViewController: BaseViewController {
 
     override func viewDidLoad() {
         title = "蓝牙日志"
+        self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "save", style: .done, target: self, action: #selector(shareAction))
     }
     
     override func viewDidAppear(_ animated: Bool) {
@@ -23,5 +24,36 @@ class LogViewController: BaseViewController {
         let range = NSMakeRange(textView.text.count - 1, 1)
         textView.scrollRangeToVisible(range)
     }
+
+
+@objc func shareAction() {
+    let formatter = DateFormatter()
+    formatter.dateFormat = "yyyyMMddHHmmss"
+    let name = formatter.string(from: Date())
+    
+    let filePath = "\(NSHomeDirectory())/Documents/StarburstSdk_\(name).txt"
+    let url = URL(fileURLWithPath: filePath)
+    let data = self.textView.text.data(using:.utf8)
+    do {
+        try data?.write(to: url, options:.atomic)
+        print(filePath)
+        self.saveFile(withFilePath: filePath)
+    } catch {
+        print(error)
+    }
 }
 
+func saveFile(withFilePath filePath: String) {
+    let fUrl = URL(fileURLWithPath: filePath)
+    let vc = UIDocumentPickerViewController(url: fUrl, in:.exportToService)
+    vc.delegate = self
+    vc.modalPresentationStyle = .overFullScreen
+    self.present(vc, animated: true, completion: nil)
+}
+}
+
+extension LogViewController:UIDocumentPickerDelegate{
+    func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
+        controller.dismiss(animated: true, completion: nil)
+    }
+}
index 536aa95..686232b 100644 (file)
Binary files a/IOTBluetooth/IOTBluetooth/IOTBluetooth.xcworkspace/xcuserdata/yaozuopan.xcuserdatad/UserInterfaceState.xcuserstate and b/IOTBluetooth/IOTBluetooth/IOTBluetooth.xcworkspace/xcuserdata/yaozuopan.xcuserdatad/UserInterfaceState.xcuserstate differ
index ea679e0..900356c 100644 (file)
@@ -576,6 +576,9 @@ public extension IBAbility {
     /// 发送socket数据
     /// - Parameter value:Data
     internal static let sendSocketData =  IBAbility.rideCode.id(0x04).parser(IBGeneralParser.self).checker(IBDataChecker.self)
+    /// 发送socket数据结束
+    /// - Parameter value:Data
+    internal static let sendSocketFinishData =  IBAbility.rideCode.id(0xff).parser(IBGeneralParser.self).checker(IBDataChecker.self)
     /// 发送socket关闭成功
     /// - Parameter value:Data
     internal static let sendSocketClose =  IBAbility.rideCode.id(0x05).parser(IBGeneralParser.self).checker(IBDataChecker.self)
index 7ec3852..9b07f7e 100644 (file)
@@ -240,7 +240,9 @@ public extension IBFileSender{
     func response(_ handler: @escaping IBCompletionHandler) -> Self {
         if Self.all.count > 1{
             handler(.response.code(.failure).message("当前有文件正在传输中..."))
-            self.remove()
+            self.revokeFileSend { result in
+                
+            }
             return self
         }
         
@@ -252,21 +254,30 @@ public extension IBFileSender{
     
     /// 撤销当前的文件传输
     func revokeFileSend(_ handler: @escaping IBCompletionHandler){
+        var sender:IBFileSender?
         for item in Self.all{
             item.cancelSend = true
+            if item !== self {
+                sender = item
+            }
+            item.remove()
+        }
+        guard let sender = sender else {
+            handler(.response.code(.success))
+            return
         }
         
         var type = IBFile.mp3
-        if self.otaInfo != nil {
+        if sender.otaInfo != nil {
             type = .ota
         }
-        else if self.mp3Info != nil{
+        else if sender.mp3Info != nil{
             type = .mp3
         }
-        else if self.dialInfo != nil{
+        else if sender.dialInfo != nil{
             type = .dial
         }
-        else if self.appInfo != nil{
+        else if sender.appInfo != nil{
             type = .app
         }
         else{
@@ -277,9 +288,8 @@ public extension IBFileSender{
             .ability(.revokeFileSend)
             .parameters([.file(type)])
             .response { result in
-                handler(result)
-                self.remove()
             }
+        handler(.response.code(.success))
     }
 }
 
index 39d5c55..4c40ab6 100644 (file)
@@ -81,11 +81,14 @@ public class IBSender {
             
             var bytes: [UInt8] = [0x73, ability.type.rawValue, ability.id]
             bytes = bytes + packageCount.byte4 + dataTotalLength.byte4 + index.byte4 + dataLength.byte2
-            bytes = bytes + list[0] + [LRC.calculateLRC(list[0])]
+            bytes = bytes + list[0]
             
             newList.append(bytes)
             newList.append(contentsOf: list[1...list.count - 1])
             
+            var last = newList.last! + [LRC.calculateLRC(totalData)]
+            newList[newList.count - 1] = last
+            
             return newList
         }
         else{
@@ -116,7 +119,7 @@ public class IBSender {
         let data = listData.data
         var list = [[UInt8]]()
         var index = 0
-        let seg = 494
+        let seg = ability.type == .rideCode ? 494:495
 //        let seg = 492
         while index < data.count {
             if index < data.count - seg {
index 8154a1f..6bffb2d 100644 (file)
@@ -7,7 +7,7 @@
                <key>Example.xcscheme_^#shared#^_</key>
                <dict>
                        <key>orderHint</key>
-                       <integer>3</integer>
+                       <integer>6</integer>
                </dict>
        </dict>
 </dict>
index d65fc50..ec3cb4b 100644 (file)
Binary files a/IOTBluetooth/IOTBluetooth/IOTBluetooth/MixSdk/MixSdk.xcworkspace/xcuserdata/yaozuopan.xcuserdatad/UserInterfaceState.xcuserstate and b/IOTBluetooth/IOTBluetooth/IOTBluetooth/MixSdk/MixSdk.xcworkspace/xcuserdata/yaozuopan.xcuserdatad/UserInterfaceState.xcuserstate differ
index 8583fb9..60ded6e 100644 (file)
@@ -7,7 +7,7 @@
                <key>MixSdk.xcscheme_^#shared#^_</key>
                <dict>
                        <key>orderHint</key>
-                       <integer>1</integer>
+                       <integer>0</integer>
                </dict>
        </dict>
 </dict>
index fa4c272..15bbee4 100644 (file)
                <key>IQKeyboardManagerSwift.xcscheme_^#shared#^_</key>
                <dict>
                        <key>orderHint</key>
-                       <integer>4</integer>
+                       <integer>3</integer>
                </dict>
                <key>Pods-Example.xcscheme_^#shared#^_</key>
                <dict>
                        <key>orderHint</key>
-                       <integer>1</integer>
+                       <integer>7</integer>
                </dict>
                <key>SnapKit-SnapKit_Privacy.xcscheme_^#shared#^_</key>
                <dict>
                        <key>orderHint</key>
-                       <integer>0</integer>
+                       <integer>4</integer>
                </dict>
                <key>SnapKit.xcscheme_^#shared#^_</key>
                <dict>
                        <key>orderHint</key>
-                       <integer>6</integer>
+                       <integer>1</integer>
                </dict>
                <key>Toast-Swift.xcscheme_^#shared#^_</key>
                <dict>
index d761747..7de1b64 100644 (file)
@@ -13,7 +13,7 @@ public class IBWatchInfoH5:Codable {
     /// 消费者账号
     public var consumerIdentity:String = ""
     /// 消费者账号类型,0:品牌商注册账号,1:聚合平台注册账号
-    public var consumerType:String = ""
+    public var consumerType:Int = 0
     /// 设备序列号,从表端获取,需要品牌商提前将序列号在聚合平台注册
     public var deviceSn:String = ""
     /// H5页面主题, 模式:light(浅色)(默认)/dark(深色)
index de8acdb..dfa24a8 100644 (file)
@@ -11,6 +11,18 @@ class IBRideCodeManager{
     var socket:RideCodeSocket?
     
     func recieve(data:Data){
+        if data.count < 18 {
+            return
+        }
+        let pkgTotal = data[3...6].int
+//        let dataTotal = data[7...10].int
+//        let pkgIndex = data[11...14].int
+//        let pkgLen = data[15...16].int
+        if(pkgTotal > 1){
+            Logger.log("分包接收结束")
+            sendDataRecieveFinish2Ble()
+        }
+        
         if  data.bytes[2] == 0x02{
             let dataPacket = IBGeneralParser.dataPacket(data)
             guard let host = String(data: Data(dataPacket), encoding: .utf8) else{
@@ -39,7 +51,8 @@ class IBRideCodeManager{
         }
         else if data.bytes[2] == 0xff{
             let dataPacket = IBGeneralParser.dataPacket(data)
-            Logger.log("需要重传",Data(dataPacket).int)
+            let index = Data(dataPacket).int
+            Logger.log("需要重传",index)
         }
     }
 }
@@ -129,6 +142,16 @@ extension IBRideCodeManager{
                 Logger.log(result.description)
             }
     }
+    func sendDataRecieveFinish2Ble(){
+        let data = Data([0x00,])
+        IBSender()
+            .deinitTimer()
+            .ability(.sendSocketFinishData)
+            .parameters([.data(data)])
+            .response { result in
+                Logger.log(result.description)
+            }
+    }
     func sendClose2Ble(){
         let list:[UInt8] = [
             0x01,