HarmonyOS 鸿蒙Next中碰一磁如何实现?

HarmonyOS 鸿蒙Next中碰一磁如何实现? 看了官方的宣传,感觉很好用的样子。

各们大佬们,有实现过该能力么,有具体的可实现的相关资源推荐么?

感谢。

17 回复

申请权限

//在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


感谢回复,

感谢,学习了,

楼主可通过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);

感谢,学习了,

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

感谢,学习了,

互相学习,

找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"。

实际结果

父组件的文本更新了,但子组件的文本没有变化。

尝试过的解决方案

  1. 检查了装饰器的使用方式,确认@State@Prop的用法正确
  2. 尝试使用@Link代替@Prop,但问题依旧存在
  3. 重新阅读了官方文档中关于组件通信的部分

环境信息

  • DevEco Studio版本:3.1.1
  • SDK版本:API Version 11
  • 设备:华为MatePad Pro

请问这是什么原因导致的?应该如何解决这个问题?

感谢回复,

调用share kit
import { uniformTypeDescriptor as utd } from ‘@kit.ArkData’; 
import { systemShare, harmonyShare } from ‘@kit.ShareKit’; 
import { fileUri } from ‘@kit.CoreFileKit’;,

感谢回复,

鸿蒙Next的碰一磁功能基于近距离无线通信技术实现。该功能通过设备内置的NFC芯片和磁场感应模块协同工作,当两台支持设备靠近时自动触发预设交互协议。系统底层使用分布式软总线技术建立点对点连接,实现设备间的快速识别和数据传输。鸿蒙的原子化服务架构允许碰一磁操作直接调用对应的服务卡片,无需安装完整应用。整个过程在端到端加密的安全环境下完成,确保用户隐私和数据安全。

目前HarmonyOS Next的磁吸交互(“碰一磁”)能力主要依赖NFC和分布式技术实现设备间快速连接与协同。具体可通过以下方式实现:

  1. 使用NFC触发:设备间通过NFC标签感应快速交换身份标识,建立安全连接。
  2. 分布式软总线:基于鸿蒙的分布式能力自动发现设备并同步状态,实现跨设备任务接续。
  3. 官方开发资源:参考HarmonyOS SDK中的@ohos.nfc模块和分布式设备管理API,文档提供了设备发现、数据传输的完整示例代码。

建议直接查阅官方开发指南中的“跨设备协同”章节,包含完整的接口调用示例和最佳实践。

回到顶部