v0.7.0 接上真实服务器:登录 / 设备会话 / 全量同步与各模块真实数据

从「演示数据壳子」走到「真的能连家里的服务器用」。

登录(用户 2026-10-17「完整的登录功能」)
  · 首次启动先填服务器地址 → /api/v1/ping 自报门户(认得出"这地址上真是家书")
  · 手机号或用户名 + 密码 → 拿令牌;失败提示统一,不泄露账号是否存在
  · FbDeviceStore:首次启动生成并持久化设备 UUID(三方应用拿不到 UDID),
    设备名取机型(marketName),并上报 platform / app_version

设备会话(v57,用户 2026-10-17)
  · 一把令牌 = 一台设备的一条会话;每次启动打一次 /me(有网就验)
  · 两种锁分开:need_login(401/被踢 → 清令牌)与 offline_expired
    (离线超 24h → 只锁界面、不清数据、联网自动恢复)——
    混成一种就会违背用户要的"一直联网就不用每天输密码"
  · 运行期任何请求 401 → 网络层全局回调立刻锁定跳登录页(FbHttp 的 authProbe
    让登录/校验类请求跳过,避免"两个地方同时跳登录页")
  · 退出登录:先清本地令牌(主防线),再尽力通知服务端
  · 设置页显示版本号与「这台设备」

数据层
  · FbDb / FbSchema / FbParse / 各 Repo(日程 / 名册 / 观影 / 模块)+ FbSyncAll
  · 首页改为服务端 /home(农历/节气/纪念日/生日/天气/统计/往年的今天)
  · 日程页用 FbDayEventPanel,与网页端显示方式/红线/并排三处一致

验证:ArkTS 静态守卫 231/0;hvigor 编译 BUILD SUCCESSFUL(entry-default-signed.hap)。
This commit is contained in:
2026-10-18 03:36:04 +08:00
parent 7eaa641437
commit 776c95ba0b
64 changed files with 18297 additions and 1519 deletions
+19 -1
View File
@@ -14,6 +14,15 @@
},
{
"name": "ohos.permission.GET_NETWORK_INFO"
},
{
// 🔴 质感握姿(左手/右手握持)—— 用户 2026-10-16 第 4 条。
// `multimodalAwareness.motion` 的 `holdingHandChanged` 要求此权限。
// ⚠️ 它是 `system_grant` + `availableLevel: normal` + `provisionEnable: false`
// (在 SDK 的权限定义里核过)⇒ **安装即获得,不会弹授权框**。
// ⚠️ API 20 起才有;低版本设备会抛 801(能力不支持)——
// 代码里已 try/catch 兜住,拿不到就退回默认方向。
"name": "ohos.permission.DETECT_GESTURE"
}
],
"deliveryWithInstall": true,
@@ -24,7 +33,16 @@
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"description": "$string:EntryAbility_desc",
"icon": "$media:layered_image",
// 🔴 v45 修:原为 `$media:layered_image`(分层图标),导致桌面图标
// 外面有一圈米色底、且图案显得小。原因:
// · `background.png` 是**纯米色满幅图**(512²)⇒ 那圈底色;
// · `foreground.png` 的图案**只占 44%**,系统还要留安全区
// ⇒ 图案被缩得更小。
// 另一个真 bug:`app.json5` 的分层图在 **AppScope** 下找,
// 但 `background/foreground.png` **只在 entry 里**,AppScope 里没有
// ⇒ 引用落空。
// ⇒ 直接改用与应用内左上角**同一个** `fb_logo`(图案几乎铺满)。
"icon": "$media:fb_logo",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:startIcon",
"startWindowBackground": "$color:start_window_background",