【OpenHarmony/HarmonyOs 】近场快传学习卡片设计:基于模型路由、收藏状态与权限最小化
【OpenHarmony/HarmonyOs 】近场快传学习卡片设计:基于模型路由、收藏状态与权限最小化
本文基于我的 OpenHarmony/HarmonyOS 项目「物理视界 PhysicsVision」整理。当前项目已经有模型元数据、路由、收藏、最近浏览和学习进度。
这一篇不是说项目已经完成近场快传,而是基于现有结构设计“模型学习卡片如何通过近场快传分享”。对应主题:近场快传、全场景智慧生活、精细化权限管控。📤
一、为什么物理模型适合近场快传?
物理学习经常发生在多人场景:
- 同桌互相推荐模型;
- 老师课堂分发实验;
- 学生把错题相关模型发给同学;
- 家长让孩子打开某个复习内容;
- 平板和手机之间续接学习。
如果每次都让用户手动搜索模型,成本比较高。
近场快传可以把“某个模型入口”直接发送给附近设备。
二、项目已有的模型路由
实验室页中已经维护了模型路由:
private routes: string[] = [
'pages/SoundPropagation',
'pages/LightReflection',
'pages/SeriesParallelCircuit',
'pages/UniformAcceleration',
'pages/FreeFall',
'pages/ForceComposition',
'pages/ProjectileMotion'
]
每个模型还有名称、描述、分类、年级和难度:
private names: string[] = [
'声音的传播', '光的反射', '串并联电路'
]
private categoryTags: string[] = [
'波动', '光学', '电磁学'
]
private difficulties: string[] = [
'基础', '基础', '基础'
]
这些数据已经足够生成一张“学习卡片”。
三、学习卡片可以包含什么?
一个模型分享卡片可以设计为:
interface PhysicsShareCard {
modelIndex: number
name: string
desc: string
category: string
grade: string
difficulty: string
route: string
}
例如:
{
"modelIndex": 11,
"name": "光的干涉",
"category": "光学",
"grade": "高三",
"difficulty": "挑战",
"route": "pages/LightInterference"
}
接收端拿到 route 后就可以打开对应模型。
四、为什么只传模型索引和路由?
近场快传不一定要传复杂文件。
对于这个项目来说,模型内容已经内置在 App 中,所以分享时只需要传:
- 模型索引;
- 路由;
- 标题;
- 简短描述。
这样有几个好处:
- 数据很小;
- 传输快;
- 不涉及用户隐私;
- 不需要上传云端;
- 接收端打开稳定。
这也符合权限最小化原则。
五、分享入口放在哪里?
我认为可以放在三个位置:
1. 实验室模型卡片
每个模型卡片右侧增加分享按钮。
适合快速推荐。
2. 模型详情页顶部栏
当前顶部栏已有返回和收藏:
Text(this.isFav() ? '❤️' : '🤍')
.fontSize(22)
.onClick(() => { this.toggleFav() })
后续可以在收藏旁边增加分享:
← 光的干涉 🌈 ❤️ 📤
3. 收藏页
用户收藏的通常是重点模型,从收藏页分享也很自然。
六、接收端如何处理?
接收端拿到卡片后,可以:
- 校验
modelIndex是否在合法范围; - 校验
route是否存在; - 记录访问;
- 跳转到模型详情页。
项目中已有访问记录方法:
recordVisit(idx: number): void {
if (this.visitedModels.length === 0) {
this.visitedModels = idx.toString()
return
}
let parts = this.visitedModels.split(',')
for (let i = 0; i < parts.length; i++) {
if (parseInt(parts[i]) === idx) return
}
this.visitedModels = this.visitedModels + ',' + idx.toString()
}
接收分享后也可以调用类似逻辑,把模型加入最近浏览。
七、权限管控:用户主动分享时才触发
近场快传属于用户主动行为,不应该在 App 启动时申请相关权限或能力。
建议流程:
- 用户点击分享;
- 弹出分享确认;
- 说明将发送模型名称和入口;
- 用户确认后触发近场能力;
- 发送成功后提示。
这样用户知道自己发送了什么,也知道什么时候触发系统能力。
八、不应该分享哪些内容?
为了隐私保护,不建议默认分享:
- 用户挑战成绩;
- 最近浏览完整列表;
- 个人学习画像;
- 设备信息;
- 用户身份;
- 任何图片、音频或定位信息。
如果未来要分享成就卡片,也应该让用户明确选择。
九、和全场景智慧生活的关系
近场快传可以让学习在设备之间流动:
- 手机上找到模型,发给平板大屏学习;
- 老师设备发给学生设备;
- 同学之间分享同一个实验;
- 家庭场景中把复习模型发给孩子设备。
这就是全场景智慧学习:
内容不是被锁在某个设备里,而是跟着学习场景流转。
十、总结
「物理视界」当前还没有真正接入近场快传,但它已经具备做近场分享的基础:模型元数据、路由、收藏、最近浏览和详情页入口。
后续只要把模型封装成轻量学习卡片,就能实现低权限、低数据量、强场景感的分享体验。
这篇文章对应的主题是:近场快传 + 全场景智慧生活 + 精细化权限管控。
它没有脱离当前项目,而是基于真实路由和模型结构做扩展设计。📤

更多推荐


所有评论(0)