SuperAPI AI 工具集

maui-networking-offline-data

编程与开发

查看项目

更新于 10-16 09:54

技能介绍

用途:当 MAUI 功能需要调用后端 API、开发时访问本地服务、持久化本地数据或需在离线状态下良好运行时使用。

主要能力:通过依赖注入注册类型化或具名 HttpClient(如 builder.Services.AddHttpClient<IProductsApi, ProductsApi>(...)),集中管理请求/响应 DTO 与 JsonSerializerOptions;为裁剪或 NativeAOT 场景优先使用 System.Text.Json 源生成;按运行平台决定本地开发地址;用 SQLite 存储结构化本地状态、离线队列与缓存数据;结合连接状态 API 决定何时展示离线界面与排空同步队列。

使用方式:本地地址上,Android 模拟器用 10.0.2.2 访问宿主机,iOS 模拟器与 Windows/Mac Catalyst 用 localhost,物理设备需局域网可达主机名、反向隧道、开发代理或已部署端点。明文 HTTP 仅限调试:Android 用 networkSecurityConfig 或 UsesCleartextTraffic 并以 #if DEBUG、IsDevelopment 或 MSBuild Debug 条件限制,iOS/Mac Catalyst 用 NSAppTransportSecurity 例外,发布构建应使用 HTTPS。可用 IConnectivity 判断网络,仅 NetworkAccess.Internet 表示可路由连接。SQLite 初始化示例:var db = new SQLiteAsyncConnection(databasePath); await db.CreateTableAsync<Order>(); await db.CreateTableAsync<SyncOperation>();

适用场景与限制:适合需缓存数据、离线编辑与同步的移动应用;需先明确离线边界(只读缓存参考数据、可离线编辑的用户数据、服务器权威数据),并说明哪些本地表不参与上传。同步方面,应先持久化队列再发送,幂等操作自动重试、非幂等操作需询问用户,冲突须有明确策略(服务器优先、客户端优先、字段合并或用户决定),队列在后台分批/分块排空,仅用 MainThread 更新进度;敏感数据应加密本地 SQLite(如 SQLCipher)并把密钥存入 SecureStorage,而非源码或 Preferences。请求需支持 CancellationToken、区分瞬时与永久错误、对瞬时失败用带抖动的指数退避,且不得静默吞掉同步失败。