# RightThere
**Repository Path**: FraCreeper/RightThere
## Basic Information
- **Project Name**: RightThere
- **Description**: 2025年移动软件开发作业和实验
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 286
- **Created**: 2025-11-26
- **Last Updated**: 2025-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 打卡点管理APP - README
## 一、项目简介
本APP是一款专注于**打卡点管理与近距离打卡**的工具类应用,支持打卡点的添加、分类、地图可视化、离线数据共享等核心功能,适用于企业考勤、项目巡检、活动打卡等多场景使用,无需网络即可完成核心操作,兼顾实用性与便捷性。
## 二、功能定位
### 核心功能
1. **打卡点管理**:支持添加、编辑、删除打卡点,包含地点名称、经纬度、分类标签(如“珠海某公司”“深圳某公司”)等信息;
2. **地图可视化**:以地图标记形式展示所有打卡点,支持在地图上直接修改打卡点位置;
3. **近距离打卡**:用户位于打卡点300米范围内时,可触发打卡操作,自动记录打卡时间;
4. **历史记录查询**:以清晰格式展示用户过往打卡记录,支持按分类、时间筛选;
5. **备份/导入功能**:支持本地数据备份与导入,离线状态下可共享打卡点数据;
6. **分类标签**:通过Tag/分类功能对打卡点进行分组管理,便于快速筛选;
7. **离线可用**:核心功能(打卡、查看记录、管理打卡点)无需网络支持,数据本地存储。
### 目标用户
需要对多地点进行打卡管理的个人或团队(如企业行政、项目负责人、活动组织者等)。
## 三、开发阶段规划
| 阶段 | 周期 | 核心任务 | 产出物 |
|------|------|----------|--------|
| 1. 需求分析与设计 | 1周 | 1. 梳理详细功能需求与交互逻辑;
2. 设计UI原型与页面流程图;
3. 确定技术栈与数据存储方案 | 需求文档、UI原型图、技术方案文档 |
| 2. 基础架构搭建 | 1周 | 1. 创建项目工程(Android/iOS);
2. 集成核心依赖库(地图SDK、权限库等);
3. 配置权限(定位、存储);
4. 搭建本地数据库(打卡点、打卡记录存储) | 基础项目工程、权限配置完成、数据库表结构搭建 |
| 3. 核心功能开发 | 3周 | 模块1:打卡点管理(添加/编辑/删除/分类);
模块2:地图界面(打卡点标记、地图上修改位置);
模块3:打卡功能(300米范围检测、打卡时间记录);
模块4:历史记录页面(展示/筛选/导出);
模块5:备份/导入功能(本地文件读写、数据同步) | 各模块功能可用、核心流程贯通 |
| 4. 测试与优化 | 1周 | 1. 功能测试(边界场景、异常处理);
2. 兼容性测试(多设备/系统版本);
3. 性能优化(启动速度、地图加载流畅度);
4. Bug修复与交互体验优化 | 测试报告、优化后的稳定版本 |
| 5. 发布上线 | 1周 | 1. 打包应用(Android APK/iOS IPA);
2. 编写用户使用手册;
3. 应用商店提交或内部分发;
4. 收集用户反馈并规划迭代 | 可发布版本、使用手册 |
## 四、依赖列表
### 核心依赖(必须集成)
| 依赖名称 | 用途 | 备注 |
|----------|------|------|
| 腾讯地图SDK | 地图显示、打卡点标记、经纬度定位、地图上修改打卡点 | 核心地图功能支撑 |
| AndroidX/Lifecycle(Android) | 页面生命周期管理、数据状态维护 | 安卓端基础依赖 |
| UIKit/CoreLocation(iOS) | 界面组件、定位功能基础 | iOS端基础依赖 |
| Room/SQLite | 本地数据存储(打卡点、打卡记录、分类信息) | 离线数据持久化 |
| 权限请求库(如EasyPermissions/AuthorizeTools) | 申请定位权限、存储权限 | 适配Android 6.0+/iOS 10+权限机制 |
| Gson/JSONSerialization | 数据序列化(备份/导入时的JSON格式处理) | 支持数据跨设备共享 |
| FileProvider(Android)/FileManager(iOS) | 本地文件读写(备份文件生成/导入) | 离线数据共享核心 |
### 可选依赖(增强功能)
| 依赖名称 | 用途 | 备注 |
|----------|------|------|
| Glide/SDWebImage | 分类图标、打卡点图标加载 | 优化UI展示 |
| MPAndroidChart/Charts | 打卡统计图表(如月度打卡次数、分类打卡占比) | 数据可视化增强 |
| Retrofit/Alamofire | (可选)网络同步功能(如需在线备份) | 扩展在线功能时集成 |
## 五、腾讯地图Key配置说明
### 1. Key申请步骤
1. 访问[腾讯地图开放平台](https://lbs.qq.com/),注册并登录账号;
2. 进入「控制台」→「应用管理」→「创建应用」,填写应用名称(如“打卡点管理APP”),选择应用类型;
3. 应用创建后,点击「添加Key」,选择对应平台(Android/iOS):
- Android:填写应用包名(如`com.example.checkinapp`),勾选“地图SDK”“定位SDK”权限;
- iOS:填写Bundle ID(如`com.example.CheckinApp`),勾选“地图SDK”“定位SDK”权限;
4. 提交后即可获得专属腾讯地图Key(需妥善保管,避免泄露)。
### 2. 项目配置步骤
#### Android端
1. 打开项目的`AndroidManifest.xml`文件;
2. 在``标签内添加以下meta-data配置,替换`YOUR_TENCENT_MAP_KEY`为申请的Key:
```xml
```
3. 确保已添加地图SDK依赖(参考腾讯地图官方文档最新版本):
```gradle
dependencies {
implementation 'com.tencent.map:tencent-map-sdk:latest_version'
}
```
#### iOS端
1. 打开项目的`Info.plist`文件;
2. 新增键值对:Key为`TXMapSDKAppKey`,Value为申请的腾讯地图Key;
3. 在`Podfile`中添加地图SDK依赖(参考官方最新版本):
```ruby
pod 'TencentMapSDK-iOS'
```
4. 执行`pod install`完成集成。
### 3. 注意事项
- Key与应用包名/Bundle ID强绑定,修改包名/Bundle ID后需重新申请Key;
- 测试环境与正式环境建议使用不同Key,避免正式Key泄露;
- 若需使用腾讯地图的高级功能(如POI搜索),需在开放平台额外启用对应API权限。
## 六、其他说明
1. 运行环境:Android 8.0+(API 26+)、iOS 12.0+;
2. 必要权限:定位权限(用于打卡范围检测)、存储权限(用于备份/导入数据);
3. 数据存储:所有数据默认存储在本地,备份文件格式为JSON,支持手动导出至手机存储;
4. 迭代规划:后续可扩展在线同步、打卡提醒、多用户共享打卡点等功能。
如有问题或需求迭代,可联系开发团队进行沟通。