SuperAPI AI 工具集

expo-modules

编程与开发

查看项目

更新于 10-16 04:24

技能介绍

用途

Expo Modules 用于在 Expo 项目中访问设备功能与原生能力。当需要调用相机、定位、通知、文件系统等设备 API 时,可使用本技能提供的模块与示例代码。

主要能力

技能覆盖以下 Expo SDK 模块:

  • 相机(expo-camera):使用 Camera 组件与 CameraType,通过 Camera.useCameraPermissions() 获取与申请相机权限,并支持前后摄像头切换。
  • 定位(expo-location):通过 requestForegroundPermissionsAsync() 申请前台权限,使用 getCurrentPositionAsync() 获取当前位置。
  • 通知(expo-notifications):使用 setNotificationHandler 配置通知展示行为,通过 addNotificationReceivedListener 监听通知,使用 scheduleNotificationAsync 安排本地通知。
  • 文件系统(expo-file-system):提供 writeAsStringAsync、readAsStringAsync、downloadAsync 等方法,在 documentDirectory 下读写与下载文件。
  • 图片选择(expo-image-picker):使用 launchImageLibraryAsync 从相册选择图片,支持编辑、宽高比与质量设置。
  • 安全存储(expo-secure-store):提供 setItemAsync、getItemAsync、deleteItemAsync 存取敏感数据(如令牌)。
  • 设备信息(expo-device / expo-application / expo-constants):读取设备名称、类型、系统名称与版本、应用版本、构建版本及 Expo 版本。
  • 持久化存储(@react-native-async-storage/async-storage):封装 set/get/remove/clear 方法,以 JSON 序列化方式存储数据。
  • 后台任务(expo-background-fetch / expo-task-manager):通过 TaskManager.defineTask 定义任务,使用 registerTaskAsync 注册后台抓取任务,可配置最小间隔、终止后是否停止、开机是否启动。
  • 内容分享(expo-sharing):使用 isAvailableAsync 检查可用性,通过 shareAsync 分享文件并指定 MIME 类型与对话框标题。

使用方式

各模块以 ES Module 方式导入,例如 import * as Location from 'expo-location'。权限类模块通常先调用对应的权限申请方法,判断返回的 status 是否为 granted 后再执行后续操作。示例代码展示了在 React 组件或自定义 Hook 中调用这些 API 的写法。

最佳实践

  • 权限处理:先申请前台权限,仅在确有需要时再申请后台权限。
  • 安全存储:敏感数据(如令牌)使用 SecureStore 而非普通存储。
  • 设备信息:组合使用 expo-device、expo-application 与 expo-constants 获取完整设备与应用信息。

适用场景

适用于使用 Expo 构建的 React Native 应用,需要在跨平台(iOS/Android)中统一调用设备原生功能的开发场景,例如拍照、定位、推送、文件读写、后台同步与分享等。

限制

资料未提供各模块的版本要求、平台差异细节、收费或价格信息,也未提供安装命令与具体配置步骤,相关内容暂未提供。