在MAUI应用中读取NFC标签,核心思路是在各平台启用NFC硬件权限,再通过MAUI的跨平台接口或平台特定代码监听标签靠近事件并解析数据。下面介绍完整的实现方式。

一、项目配置与权限开启
不同平台对NFC的支持方式不同,需要先做基础配置。
Android平台
在Platforms/Android/AndroidManifest.xml中添加NFC权限与功能声明:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.NFC" />
<uses-feature android:name="android.hardware.nfc" android:required="true" />
</manifest>
iOS平台
在Platforms/iOS/Info.plist中增加近场通信描述:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NFCReaderUsageDescription</key>
<string>需要读取NFC标签</string>
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>TAG</string>
</array>
</dict>
</plist>
二、共享代码监听NFC标签
MAUI目前没有统一的NFC抽象,通常使用条件编译调用平台API。下面示例展示Android读取标签文本:
#if ANDROID
using Android.Nfc;
using Android.App;
using Android.Content;
public class NfcService
{
public void EnableReaderMode(Activity activity)
{
var nfc = (NfcManager)activity.GetSystemService(Context.NfcService);
var adapter = nfc.DefaultAdapter;
var flags = NfcReaderFlags.NfcA | NfcReaderFlags.NoPlatformSounds;
// 注册监听回调
adapter.EnableReaderMode(activity, new TagCallback(), flags, null);
}
}
public class TagCallback : Java.Lang.Object, NfcAdapter.IReaderCallback
{
public void OnTagDiscovered(Tag tag)
{
// 此处可解析tag中的数据
System.Console.WriteLine("发现NFC标签");
}
}
#endif
三、iOS读取标签示例
在iOS上使用NFCTagReaderSession读取:
#if IOS
using CoreNFC;
using Foundation;
public class IosNfcReader
{
public void Start()
{
var session = new NFCTagReaderSession(NFCTagType.NfcNdef, null);
session.BeginSession();
// 实际项目需实现INFCReaderSessionDelegate处理发现事件
System.Console.WriteLine("开始iOS NFC扫描");
}
}
#endif
四、注意事项
- 真机才能测试NFC,模拟器通常不支持。
- Android的
EnableReaderMode需在Activity生命周期内正确管理。 - iOS必须在设置-开发者中开启NFC测试能力(部分系统版本)。
读取NFC标签时建议将解析逻辑放在后台线程,避免阻塞界面。
五、小结
MAUI读取NFC标签主要依赖各平台原生API,通过条件编译组织代码即可实现跨平台兼容。掌握上述MAUI NFC功能实现方法,就能在应用中顺利读取标签内容。
MAUINFCTag_Reader修改时间:2026-07-26 06:27:10