浅念
|
42e1c2e34b
|
feat(mobile): ios background upload bridge (compile-gated at G3)
Swift 侧(协议与 Android UploadPlugin.kt 逐字一致,编译/真机留 G3):
- UploadBridge.swift:通道/方法/事件/失败码常量 + registerTask 参数解析
(镜像 UploadProtocol.kt)
- UploadEventBus.swift:单调 seq + 终态 ack 缓存重放(镜像
UploadEventBus.kt),iOS 增强——未 ack 终态落盘(系统后台拉起投递的
回调在进程重启后同样重放,技术方案 §6.2 持久化原生回调)
- UploadTaskStore.swift:taskId→URLSession taskIdentifier 映射 plist 持久化
(Application Support;对应 Android WorkManager 自持映射)
- UploadPlugin.swift:URLSession background
(com.photolive.photo_live.uploads)+ delegate 失败分类(2xx→completed+etag
/ 403→needsRenew / 4xx→HTTP_4XX / 网络→重试上限后 NETWORK,镜像
UploadPutExecutor/UploadWorker)、原生重试(5 次上限、10s 指数退避)、
进度 500ms 节流、queryTask/cancelTask/ackEvents、静默取消
- AppDelegate.swift:implicit engine 通道注册 + 启动重建会话 +
handleEventsForBackgroundURLSession completionHandler 暂存
- Info.plist:UIBackgroundModes 有意不声明(background URLSession 无需;
计划措辞按技术方案 §6.2 修正,见 README-ios.md)
- project.pbxproj 登记新 Swift 文件;README-ios.md(Xcode 步骤 + G3 验证
清单:实际文件上传/持久化回调窗口/服务端补偿/重启重联校准/强制退出/
低电量延迟/100 张批量)
Dart:NativeTransport 选择矩阵并入 iOS(Platform.isAndroid || isIOS,
FORCE_DART_TRANSPORT 覆盖不变)——协议两侧一致,无新通道代码。
flutter analyze 0 issue;flutter test 219 全绿。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-19 03:42:49 +08:00 |
|