跳到主要内容

移动端(iOS)

移动端交付受系统版本、审核、权限与后台策略约束。本篇以 Apple 平台与 Swift 为主(个人项目与产品主线),Android 仅在需双端时通过 KMP/共享逻辑处理,UI 仍分平台。

平台约束速览

约束影响
应用生命周期后台时间短;状态恢复、场景(Scene)
权限相机、位置、通知需时机化请求与用途字符串
分发App Store 审核、签名、TestFlight
设备碎片屏幕、动态岛、辅助功能、性能档位

SwiftUI 结构(默认)

层级职责
View声明式 UI、无副作用 body
Model@Observable / 值类型状态
服务网络、持久化、系统 API(通过协议注入)

导航NavigationStack + 类型安全路由;深链用 onOpenURL 统一入口。

并发:UI 更新在 @MainActor;重活 Task offload;跨 actor 传值遵守 Sendable

提示

预览驱动:为复杂视图写 #Preview,用 mock 服务减少真机往返。

与架构分层对齐

整洁架构角色Swift 落地
领域纯 Swift 类型、无 UIKit/SwiftUI import
用例async 服务、协调 repository
适配器URLSession、SwiftData/Core Data、Keychain
表现SwiftUI View + ViewModel(薄)

数据流:单向——用户事件 → 用例 → 状态快照 → View。避免 View 直接调 SDK。

详见 分层边界

持久化选择

方案适用
UserDefaults / Keychain设置、令牌(密钥仅 Keychain)
SwiftData / Core Data结构化离线、关系查询
文件 / CloudKit大对象、跨设备同步(需设计冲突)

迁移:schema 版本 + 轻量迁移测试;与 CI 联动的 UI 测试跑在模拟器矩阵。

网络与离线

  • API 客户端统一超时、重试策略、可取消 Task
  • 列表页:占位 + 增量加载;错误态可重试
  • 幂等写操作带 client id,配合服务端去重

发布清单

步骤动作
版本号Marketing version + build 单调递增
签名自动签名或 CI 分发证书(密钥不进仓库)
隐私Privacy Nutrition Labels、用途字符串与实现一致
测试TestFlight 内测 → phased release
监控崩溃(MetricKit/第三方)、关键漏斗

Git 工作流 联动:tag 触发 archive / upload。

质量与可访问性

  • Dynamic Type、VoiceOver 标签、足够点击区域
  • 减少纯手势唯一路径;提供可见控件
  • 性能:Instruments 查主线程卡顿、过度 SwiftUI body 重算

相关篇章