HarmonyOS 鸿蒙Next中碰一磁如何实现?
HarmonyOS 鸿蒙Next中碰一磁如何实现? 看了官方的宣传,感觉很好用的样子。
各们大佬们,有实现过该能力么,有具体的可实现的相关资源推荐么?
感谢。
申请权限
//在module.json5中添加
"requestPermissions": [
{"name": "ohos.permission.NFC_TAG"},
{"name": "ohos.permission.INTERNET"}
]
const shareKit = new ShareKit();
if (!shareKit.canIUse('featureName')) {
showToast('当前设备不支持碰一碰功能');
}
//需确保双端设备均为HarmonyOS 5.0.0.102 SP6+版本
// 事件注册与数据构造
shareKit.registerNearbySharingListener({
onTrigger: (event: NearbySharingEvent) => {
const shareData: ShareData = {
type: ShareType.WEB_URL,
title: 'demo',
url: 'https://www.demo.com',
preview: $r('app.media.preview')
};
shareKit.share(shareData);
}
});
参考地址
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/knock-share
更多关于HarmonyOS 鸿蒙Next中碰一磁如何实现?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
感谢回复,
https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/tutorials_NEXT-ShareKit
这是codelabs的示例代码,可以下载运行学习
感谢,学习了,
楼主可通过ohos.nfc包实现设备间短距离数据交互,利用NFC标签完成设备识别与数据传递。可采用FA模型实现免安装服务,用户触碰设备即可拉起功能卡片。另外通过分布式数据管理实现UI跨端实时更新。
步骤:
声明NFC权限
// module.json5
"requestPermissions": [
{ "name": "ohos.permission.NFC_TAG", "reason": "NFC数据传输" }
]
NFC模块初始化与监听—需在页面显示时注册监听,退出时取消
// 初始化NFC控制器
import nfc from '@kit.ConnectivityKit';
const nfcController = nfc.getNfcController();
// 注册碰一碰监听
private immersiveCallback(sharableTarget: harmonyShare.SharableTarget) {
sharableTarget.share(); // 3秒内调用
}
private setupNfcListener() {
harmonyShare.on('knockShare', this.immersiveCallback);
}
数据序列化和传输—接收端通过nfc.readNfcTag()解析数据
// 发送端生成JSON数据
const socialData = {
name: "张三",
phone: "138****1234",
wechat: "zhangsan2025"
};
const jsonPayload = JSON.stringify(socialData);
// 通过NFC通道发送
nfcController.writeNfcTag(jsonPayload);
感谢,学习了,
碰一碰是利用分享服务实现。
可以参考:
碰一碰https://developer.huawei.com/consumer/cn/doc/design-guides/onehop-0000002354602581
碰一碰分享https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/knock-share
分享服务https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/share-introduction
分享服务APIhttps://developer.huawei.com/consumer/cn/doc/harmonyos-references/share-system-share
感谢,学习了,
互相学习,
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
关于鸿蒙系统应用开发的问题
问题描述
在鸿蒙系统应用开发过程中,遇到了一个关于组件通信的问题。具体场景如下:在使用@State
和@Prop
装饰器进行父子组件数据绑定时,发现子组件无法正确响应父组件的数据变化。
代码示例
// 父组件
@Entry
@Component
struct ParentComponent {
@State message: string = 'Hello World'
build() {
Column() {
Text(this.message)
.fontSize(30)
.onClick(() => {
this.message = 'Hello HarmonyOS'
})
ChildComponent({ childMessage: this.message })
}
}
}
// 子组件
@Component
struct ChildComponent {
@Prop childMessage: string
build() {
Column() {
Text(this.childMessage)
.fontSize(20)
}
}
}
期望结果
点击父组件的文本后,子组件的文本应该同步更新为"Hello HarmonyOS"。
实际结果
父组件的文本更新了,但子组件的文本没有变化。
尝试过的解决方案
- 检查了装饰器的使用方式,确认
@State
和@Prop
的用法正确 - 尝试使用
@Link
代替@Prop
,但问题依旧存在 - 重新阅读了官方文档中关于组件通信的部分
环境信息
- DevEco Studio版本:3.1.1
- SDK版本:API Version 11
- 设备:华为MatePad Pro
请问这是什么原因导致的?应该如何解决这个问题?
感谢回复,
感谢回复,
鸿蒙Next的碰一磁功能基于近距离无线通信技术实现。该功能通过设备内置的NFC芯片和磁场感应模块协同工作,当两台支持设备靠近时自动触发预设交互协议。系统底层使用分布式软总线技术建立点对点连接,实现设备间的快速识别和数据传输。鸿蒙的原子化服务架构允许碰一磁操作直接调用对应的服务卡片,无需安装完整应用。整个过程在端到端加密的安全环境下完成,确保用户隐私和数据安全。
目前HarmonyOS Next的磁吸交互(“碰一磁”)能力主要依赖NFC和分布式技术实现设备间快速连接与协同。具体可通过以下方式实现:
- 使用NFC触发:设备间通过NFC标签感应快速交换身份标识,建立安全连接。
- 分布式软总线:基于鸿蒙的分布式能力自动发现设备并同步状态,实现跨设备任务接续。
- 官方开发资源:参考HarmonyOS SDK中的
@ohos.nfc
模块和分布式设备管理API,文档提供了设备发现、数据传输的完整示例代码。
建议直接查阅官方开发指南中的“跨设备协同”章节,包含完整的接口调用示例和最佳实践。