当前位置: 首页 > news >正文

# HarmonyOS Wallet Kit:用你的APP当车钥匙和交通卡

什么是 Wallet Kit

你有没有想过用手机开车门?或者用手机刷地铁?Wallet Kit 就是让这些变成现实的工具。

Wallet Kit(钱包服务)集成了华为"芯-端-云"全栈技术,可以实现车钥匙、交通卡的凭证电子化。简单说,就是把你的车钥匙和交通卡"装"进手机里。

想象一下:你走到车旁边,手机拿出来一点,车门就开了;坐地铁的时候,手机碰一下闸机就过了。这就是 Wallet Kit 要实现的场景。

核心功能

Wallet Kit 提供以下功能:

  1. 车钥匙:把车钥匙模拟到手机里,用手机开车门。你走到车旁边,手机拿出来一刷,车门就开了。车钥匙的实现涉及"芯-端-云"三个层面:车主服务器生成加密的 JWE 数据,Wallet Kit 把数据添加到华为钱包,安全芯片存储密钥保证安全。整个过程不需要带实体钥匙,手机就是你的钥匙
  2. 交通卡:把交通卡保存到手机里,用手机刷地铁公交。坐地铁的时候,手机碰一下闸机就过了,和刷实体卡一样方便。交通卡的数据也存在安全芯片里,即使手机没电了(部分机型支持),也能刷卡进站

环境搭建

硬件要求

  • 设备类型:华为手机
  • HarmonyOS 系统:HarmonyOS NEXT Developer Beta1 及以上

软件要求

  • DevEco Studio 版本:DevEco Studio 6.0.0 Release 及以上
  • HarmonyOS SDK 版本:HarmonyOS 6.0.0 Release SDK 及以上

搭建步骤

  1. 安装 DevEco Studio:去华为开发者官网下载安装
  2. 配置开发环境:确保网络环境正常
  3. 设备调试:使用真机进行调试

项目结构

├── entry/src/main/ets │ ├── application/AbilityStage.ts │ ├── common // 页面工具类 │ ├── components // 页面组件 │ ├── mainability/MainAbility.ts // 本地启动ability │ └── pages │ ├── Index.ets // 首页 │ └── wallet │ ├── ICCECallBack.ets // ICCE工具类 │ ├── Pass.ets // Pass卡页面 │ └── TransitCard.ets // 交通卡页面

车钥匙添加流程

下面是添加车钥匙到华为钱包的完整流程:

用户在车主 APP 申请车钥匙

车主服务器生成 JWE 数据

创建 WalletPassClient 实例

封装 JWE 数据为 JSON

调用 addPass 方法

Wallet Kit 处理请求

数据存储到安全芯片

车钥匙添加成功

华为钱包显示车钥匙

车钥匙使用流程

下面是车钥匙的"芯-端-云"协作流程:

用户靠近车辆

手机蓝牙检测到车辆

安全芯片验证密钥

密钥是否有效?

发送解锁指令

验证失败

车辆解锁

华为云记录使用日志

第一步:导入模块

import{common}from'@kit.AbilityKit';import{walletPass}from'@kit.WalletKit';import{BusinessError}from'@kit.BasicServicesKit';

导入 Wallet Kit 相关模块:

  • walletPass:钱包 Pass 卡的核心接口
  • common:AbilityKit 的通用接口
  • BusinessError:错误处理

第二步:创建 WalletPassClient

@Entry@Componentstruct Pass{privateWalletPassClient:walletPass.WalletPassClient=newwalletPass.WalletPassClient(this.getUIContext().getHostContext()ascommon.UIAbilityContext);privatejweContent:string='';// 车主服务器生成的JWE数据

创建WalletPassClient实例。这个客户端用来和钱包服务交互,添加车钥匙或交通卡。

jweContent是一个 JWE(JSON Web Encryption)格式的字符串,包含了车钥匙的加密数据。这个数据需要从车主服务器获取。

第三步:添加车钥匙

asyncaddPass(){letpassStr=JSON.stringify({jweContent:this.jweContent})this.WalletPassClient.addPass(passStr).then((result:string)=>{console.info(`Succeeded in adding pass, result:${result}`);}).catch((err:BusinessError)=>{console.error(`Failed to add pass, code:${err.code}, message:${err.message}`);})}

调用addPass()方法添加车钥匙:

  1. 把 JWE 数据包装成 JSON 字符串
  2. 调用WalletPassClient.addPass()发送到钱包服务
  3. 成功后,车钥匙就会出现在华为钱包里

车钥匙的工作原理

车钥匙的实现涉及"芯-端-云"三个层面:

云端

  • 车主服务器:生成车钥匙的 JWE 数据
  • 华为云:验证和存储车钥匙信息

手机端

  • Wallet Kit:管理车钥匙的添加和使用
  • 华为钱包:展示车钥匙界面

芯片层

  • 安全芯片:存储车钥匙的密钥,保证安全

完整流程

  1. 申请车钥匙:用户在车主 APP 中申请车钥匙
  2. 生成 JWE:车主服务器生成 JWE 数据
  3. 添加到钱包:通过 Wallet Kit 把车钥匙添加到华为钱包
  4. 使用车钥匙:用户靠近车辆时,手机自动与车辆通信,完成解锁

交通卡

交通卡的实现类似,也是通过 Wallet Kit 把卡片信息添加到华为钱包。

// 添加交通卡的代码类似asyncaddTransitCard(){letcardStr=JSON.stringify({cardData:this.cardData// 交通卡数据});this.WalletPassClient.addPass(cardStr).then((result:string)=>{console.info(`Succeeded in adding transit card, result:${result}`);}).catch((err:BusinessError)=>{console.error(`Failed to add transit card, code:${err.code}, message:${err.message}`);});}

实际应用场景

Wallet Kit 在实际开发中有很多用途:

数字车钥匙

// 用户靠近车辆时,自动解锁asyncfunctionunlockCar(){// 通过蓝牙与车辆通信// 发送解锁指令}

交通卡充值

// 交通卡余额不足时,自动充值asyncfunctionautoRecharge(){if(balance<10){awaitrecharge(50);}}

门禁卡

// 把门禁卡添加到钱包asyncfunctionaddAccessCard(){letcardData=awaitgetAccessCardData();awaitWalletPassClient.addPass(JSON.stringify({cardData}));}

适用场景

Wallet Kit 特别适合以下场景:

  • 汽车厂商:为用户提供数字车钥匙
  • 交通公司:为用户提供电子交通卡
  • 物业公司:为用户提供电子门禁卡
  • 酒店:为用户提供电子房卡

注意事项

  1. 设备支持:不是所有设备都支持 Wallet Kit,要先确认设备兼容性
  2. 安全要求:车钥匙涉及安全,要确保密钥的安全存储
  3. JWE 数据:JWE 数据必须从车主服务器获取,不能在客户端生成
  4. 蓝牙支持:车钥匙功能需要蓝牙支持
  5. 网络要求:添加车钥匙需要网络连接

总结

Wallet Kit 让你的手机变成车钥匙和交通卡,核心流程:

  1. 从车主服务器获取 JWE 数据
  2. 创建 WalletPassClient 实例
  3. 调用 addPass() 添加车钥匙到华为钱包
  4. 用户在华为钱包中使用车钥匙

掌握了这些,你就能为你的应用添加数字车钥匙和交通卡功能,让用户的生活更便捷。

http://www.jsqmd.com/news/971046/

相关文章:

  • 支持DWG转PDF?12款工具冷门格式实测数据公开|3种零安装转换方法全攻略 - 时时资讯
  • 村长团队GTA5 EUP服装模组从零搭建教程SP单机 + FiveM
  • 华为光猫配置解密工具专业指南:3大核心功能实战解析
  • Java轻量ZIP加密打包工具:支持AES与ZipCrypto,一键生成带密码的压缩包
  • [论文学习]利用索引梯度优化基于优化的 LLM 越狱攻击:MAGIC 方法的深度分析与实现
  • 实测12款论文降AIGC工具,效果最好的竟然是它! - 降AI小能手
  • B站视频下载器技术指南:基于异步架构的高效离线解决方案
  • HarmonyOS 天气服务:让你的应用轻松获取天气数据
  • Pro/E Wildfire 4.0/5.0可用的C++特征开发套件:含标准件库、模型命名、自定义特征等完整对话框工程
  • 3个步骤,让你的Mac拥有Windows超能力:Whisky完全指南
  • [论文学习]大型语言模型中个人可识别资讯(PII)的机器遗忘技术:UnlearnPII 基准与 PERMU 方法的分析
  • EBGaramond12字体完整指南:专业排版与学术引用的完美解决方案
  • 2026年格雷斯核心经销商是哪家?行业合作方解析 - 品牌排行榜
  • 非戈替尼200mg每日治类风湿关节炎,上呼吸道感染及带状疱疹常见
  • 2026/6/7
  • 机器狗自动跟随方案
  • 从1小时3次到无限次:12款转换工具免费策略实测(3款顶配免费方案详解) - 时时资讯
  • 别再混编了!用Halcon引擎(.hdvp)重构你的C#机器视觉项目,内存泄漏拜拜
  • 【发动机】基于matlab模拟火花-点火发动机循环采用单区模型和Wiebe热释放定律求解进气压力、排气温度和燃烧分数
  • 2026格雷斯化学品代理商是哪家?行业合作方解析 - 品牌排行榜
  • javascript构造方法
  • 每日算法快闪赛技术文章大纲
  • [论文学习]LLM 遗忘机制对真实世界扰动资料的稳健性研究
  • 【太阳能】基于matlab模拟PEM电解模拟了24小时太阳能绿色氢电厂(每小时太阳能发电量、氢气产量、用水量、储罐动态以及每公斤H₂的成本
  • UniversalSplitScreen终极指南:单台电脑实现4人分屏游戏的完整解决方案
  • PlantUML类图:用代码思维讲清楚UML六大关系(含Java语法对照与记忆口诀)
  • ctf show web入门101
  • 2026格雷斯代理商合作参考:行业服务与技术支持解析 - 品牌排行榜
  • 当 AI 帮我写代码时,我学到了什么?
  • 书匠策AI官网www.shujiangce.com:别再死磕期刊论文了!