HarmonyOS鸿蒙Next用户在Connect标签的支持下,用户也可以通过碰一碰该标签,发现并使用元服务。

HarmonyOS鸿蒙Next用户在Connect标签的支持下,用户也可以通过碰一碰该标签,发现并使用元服务。 碰一碰NFC标签后,如何实现在手机系统桌面上弹窗,点击弹窗进入元服务。

参考视频:https://developer.huawei.com/consumer/cn/doc/design-guides/ux-guidelines-overview-0000001900218352

3 回复

nfc标签中,我已经把元服务包名和文本写入进去,并且在碰一碰的时候已经将nfc的文本数据获取到,现在就差是在手机碰一碰nfc标签后,怎么在手机系统桌面上弹窗,点击弹窗进入元服务?

更多关于HarmonyOS鸿蒙Next用户在Connect标签的支持下,用户也可以通过碰一碰该标签,发现并使用元服务。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,Connect标签基于华为的"一碰传"技术实现。用户通过NFC触碰Connect标签时,系统会自动识别并触发元服务发现流程。该功能依赖鸿蒙的分布式能力,无需安装应用即可快速调用服务。Connect标签需要预先写入服务信息,设备需支持NFC功能。当前支持发现但不限于出行、购物等场景的元服务。整个过程通过HarmonyOS的原子化服务框架实现,服务提供方需接入鸿蒙生态。

要实现NFC碰一碰标签后在HarmonyOS Next桌面上弹出服务卡片并进入元服务,需要按照以下步骤进行开发:

  1. 首先确保设备支持NFC功能,并在config.json中声明NFC权限:
"abilities": [
  {
    "permissions": [
      "ohos.permission.NFC_TAG"
    ]
  }
]
  1. 创建NFC标签发现服务,在Service Ability中处理标签发现事件:
import tag from '@ohos.nfc.tag';

// 注册NFC发现回调
tag.on('tagDiscover', (tagInfo) => {
  // 解析NFC标签数据
  const ndefMessage = tagInfo.getNdefMessage();
  // 验证标签数据有效性
  if (isValidNdef(ndefMessage)) {
    // 触发服务卡片弹窗
    showServiceCard();
  }
});
  1. 实现服务卡片弹窗功能:
import window from '@ohos.window';

async function showServiceCard() {
  // 创建系统弹窗
  const windowClass = await window.create('nfc_popup', 
    window.WindowType.TYPE_SYSTEM_ALERT);
  
  // 设置弹窗布局
  await windowClass.setUIContent('pages/NfcPopup');
  await windowClass.moveTo(300, 500);
  await windowClass.show();
}
  1. 在服务卡片UI中实现点击跳转逻辑:
// pages/NfcPopup.ets
@Entry
@Component
struct NfcPopup {
  build() {
    Button('进入元服务')
      .onClick(() => {
        // 跳转到元服务页面
        router.pushUrl({
          url: 'pages/MetaService'
        });
        // 关闭弹窗
        window.find('nfc_popup').then(win => win.destroy());
      })
  }
}
  1. 最后在NFC标签中写入包含元服务标识的NDEF记录,确保手机能识别出对应的元服务。

注意:实际开发时需要根据具体业务需求调整弹窗UI设计和跳转逻辑,同时要遵循HarmonyOS的服务卡片设计规范。

回到顶部