一个 Flutter 应用,用于批量自动签到重邮 LMS 课堂。支持管理多个账号,扫码签到,以及后台定时签到。
| 卡片列表 | 二维码签到 | 二维码登录 |
|---|---|---|
| 管理多个 LMS 账号,实时查看签到状态 | 扫描课堂二维码,自动为所有账号签到 | 企业微信扫码登录,获取 LMS Session |
- 多账号管理:添加多个账号,统一管理签到状态
- 二维码签到:扫描课堂二维码,自动为所有已登录账号执行签到
- 二维码登录:通过统一认证平台(IDS)扫码登录,自动获取 LMS Session
- 后台定时签到:使用 Workmanager 在后台定期刷新和签到(Android)
- 签到状态可视化:每门课签到成功/失败一目了然
- Session 自动续期:服务端返回新 sessionId 时自动更新
- Flutter SDK ^3.9.2
- Dart SDK ^3.9.2
# 获取依赖
flutter pub get
# 运行(调试)
flutter run
# 构建 Android APK
flutter build apk --release
# 构建 Android App Bundle
flutter build appbundle --release推送 tag 即可触发自动构建并发布 Release:
git tag v1.2.0
git push origin --tags- 点击右下角 + 按钮
- 使用企业微信扫描弹出的二维码完成统一认证登录
- 登录成功后自动获取姓名和 LMS Session
- 点击底部 二维码签到 按钮
- 扫描课堂上的二维码
- 自动为所有有效账号执行签到
- 签到结果实时显示在卡片上
- 点击卡片右侧的刷新图标手动刷新课程状态
- 过期卡片(session 失效)会显示警告标识,点击即可重新登录
- 扫描课堂二维码,原始结果格式:
/j?p=0~2cra!3~TOKEN!4~gi5v - 提取
!3~...!4~之间的实际 token - 获取点名列表,筛选未签到的二维码点名
- 对每个符合条件的点名调用签到 API
- 收集签到结果并展示
lib/
├── main.dart # 入口
├── models/
│ └── card_model.dart # 卡片模型
├── pages/
│ ├── card_list_page.dart # 主界面 - 卡片列表
│ ├── qr_scanner_page.dart # 扫码页面
│ └── qr_login_dialog.dart # 二维码登录弹窗
├── services/
│ ├── checkin_service.dart # 签到 API
│ ├── ids_service.dart # 统一认证登录
│ └── session_store.dart # Session 持久化
└── widgets/ # 公共组件
| 库 | 用途 |
|---|---|
http |
HTTP 请求 |
mobile_scanner |
二维码扫描 |
qr_flutter |
生成二维码 |
pointycastle |
AES 加密(登录密码) |
uuid |
生成设备 ID |
shared_preferences |
Session 持久化 |
workmanager |
后台定时签到 |
MIT