基于.NET MAUI开发iOS应用,如何获取NFC标签唯一ID?
.NET MAUI 获取NFC标签唯一ID的实现方案
由于.NET MAUI的NFC功能依赖各原生平台API,需分Android和iOS分别处理:
Android平台
Android中获取到的Tag对象对应Android.Nfc.Tag类型,直接通过其Id属性获取字节数组形式的唯一ID,再转换为十六进制字符串即可:
// 假设已获取Android.Nfc.Tag实例tag byte[] tagIdBytes = tag.Id; // 转换为无分隔符的十六进制字符串(小写) string tagUniqueId = BitConverter.ToString(tagIdBytes).Replace("-", "").ToLower();
iOS平台
iOS中获取到的Tag对象对应CoreNFC.NFCNDEFTag类型,通过Identifier属性获取NSData类型的ID数据,再转换为十六进制字符串:
// 假设已获取CoreNFC.NFCNDEFTag实例tag NSData tagIdData = tag.Identifier; // 转换为无分隔符的十六进制字符串(小写) string tagUniqueId = BitConverter.ToString(tagIdData.ToArray()).Replace("-", "").ToLower();
跨平台封装(可选)
如果需要在共享代码中统一处理,可通过依赖服务封装:
- 定义共享接口
public interface INfcTagHelper { string GetTagUniqueId(object tagInstance); }
- Android平台实现
[assembly: Dependency(typeof(NfcTagHelperAndroid))] namespace YourAppName.Droid.Helpers { public class NfcTagHelperAndroid : INfcTagHelper { public string GetTagUniqueId(object tagInstance) { if (tagInstance is Android.Nfc.Tag androidTag) { byte[] idBytes = androidTag.Id; return BitConverter.ToString(idBytes).Replace("-", "").ToLower(); } return null; } } }
- iOS平台实现
[assembly: Dependency(typeof(NfcTagHelperIos))] namespace YourAppName.iOS.Helpers { public class NfcTagHelperIos : INfcTagHelper { public string GetTagUniqueId(object tagInstance) { if (tagInstance is CoreNFC.NFCNDEFTag iosTag) { NSData idData = iosTag.Identifier; return BitConverter.ToString(idData.ToArray()).Replace("-", "").ToLower(); } return null; } } }
- 共享代码中调用
var nfcHelper = DependencyService.Get<INfcTagHelper>(); string tagId = nfcHelper.GetTagUniqueId(yourTagObject);
内容的提问来源于stack exchange,提问作者Giaco
相关产品推荐
相关产品推荐

