mcpField
M
mobile-offline-support

mobile-offline-support

github.com/aj-geddes开发373542 次安装34 周前更新
代码仓库

关于 mobile-offline-support

mobile-offline-support 是一项用于设计离线优先移动应用的技能,介绍本地存储、联网后同步及冲突处理。适合需要在网络中断时仍可使用并在恢复连接后同步数据的应用开发。

主要功能

  1. 01实现可靠的本地存储
  2. 02联网后自动同步
  3. 03将操作排队以待同步
  4. 04处理数据冲突
  5. 05缓存常用数据

适用场景

  1. 01构建无网络时仍可使用的应用
  2. 02恢复连接后同步设备与服务器数据
  3. 03通过本地存储提升应用响应速度

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill mobile-offline-support

安装后在 Claude Code 中输入/mobile-offline-support确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
android-room-database.md
ios-core-data-implementation.md
react-native-offline-storage.md
templates/
component-template.tsx

详细介绍

移动端离线支持

目录

概述

设计离线优先的移动应用,无论是否联网,都能提供流畅的用户体验。

适用场景

  • 构建无需互联网连接即可运行的应用
  • 实现网络恢复后的无缝同步
  • 处理设备与服务端之间的数据冲突
  • 通过智能缓存减轻服务端负载
  • 使用本地存储提升应用响应速度

快速开始

最简可运行示例:

import AsyncStorage from '@react-native-async-storage/async-storage';
import NetInfo from '@react-native-community/netinfo';

class StorageManager {
  static async saveItems(items) {
    try {
      await AsyncStorage.setItem(
        'items_cache',
        JSON.stringify({ data: items, timestamp: Date.now() })
      );
    } catch (error) {
      console.error('Failed to save items:', error);
    }
  }

  static async getItems() {
    try {
      const data = await AsyncStorage.getItem('items_cache');
      return data ? JSON.parse(data) : null;
    } catch (error) {
      console.error('Failed to retrieve items:', error);
      return null;
    }
  }

// ... (see reference guides for full implementation)

参考指南

references/ 目录中的详细实现:

指南内容
React Native 离线存储React Native 离线存储
iOS Core Data 实现iOS Core Data 实现
Android Room 数据库Android Room 数据库

最佳实践

✅ 应该做
  • 实现可靠的本地存储
  • 在线时使用自动同步
  • 为离线状态提供可视化反馈
  • 将操作加入队列,以便稍后同步
  • 妥善处理冲突
  • 缓存频繁访问的数据
  • 实现适当的错误恢复机制
  • 彻底测试离线场景
  • 对大型数据使用压缩
  • 监控存储使用情况
❌ 不应该做
  • 假设网络始终畅通
  • 频繁同步大型文件
  • 忽视存储限制
  • 强制进行不必要的同步
  • 在离线模式下丢失数据
  • 未加密存储敏感数据
  • 无限累积队列项
  • 默默忽略同步失败
  • 在紧密循环中同步
  • 未经离线测试就部署

评论

支持 Markdown