说明
基于浏览器 Web NFC 规范封装的标签读写组件:点击“开始扫描”后经
常见能力:
- 开始扫描:NDEFReader.scan 持续监听(disableTimeout + AbortController 停止)
- 读取标签序列号与全部 NDEF 记录,逐条给出类型 / 媒体类型 / id / 文本 / 十六进制
- 写入支持 文本 / URL / MIME 三种记录,MIME 内容按 UTF-8 编码为字节
- 可将标签锁定为一次性只读(makeReadOnly)
- 读取失败(onreadingerror)与写入 / 锁定失败均有明确提示
- OnRead / OnWrite / OnError 事件 + 公开方法双驱动
- 能力检测与安全上下文提示;桌面浏览器通常不支持时给出明确原因
用法
<Nfc Name="NFC 标签" OnRead="OnRead" OnWrite="OnWrite" OnError="OnError" />
@code {
void OnRead(NfcTag t) =>
Console.WriteLine($"{t.Display} 共 {t.Count} 条记录:{t.Records.FirstOrDefault()?.Summary}");
void OnWrite(NfcTag t) => Console.WriteLine("写入完成");
void OnError(string m) => Console.WriteLine("错误:" + m);
}
@* 也可拿到实例编程式写入 / 只读锁定 *@
<Nfc @ref="_nfc" />
<Button Text="写网址" OnClick="@(() => _nfc.WriteUrlAsync("https://known.org.cn"))" />
<Button Text="锁定只读" OnClick="@(() => _nfc.MakeReadOnlyAsync())" />
API 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
AutoScan |
bool |
false |
是否在首次渲染后自动开始扫描(仍须在安全上下文且浏览器支持;用户手势限制依宿主而定)。 |
DisableTimeout |
bool |
true |
是否持续扫描而不自动超时(对应 disableTimeout)。 |
MaxLog |
int |
200 |
日志最多保留行数,超出丢弃最旧。 |
Name |
string |
"NFC 标签" |
面板标题。 |
OnError |
EventCallback<string> |
— | 事件 发生错误,参数为错误说明。 |
OnRead |
EventCallback<NfcTag> |
— | 事件 成功读取到一张标签(序列号 + NDEF 记录)。 |
OnWrite |
EventCallback<NfcTag> |
— | 事件 成功写入标签后回显的记录。 |
ScanText |
string |
"开始扫描" |
开始扫描按钮文案(内部已本地化,作为翻译键)。 |
ShowLog |
bool |
true |
是否显示读写日志。 |
Visible |
bool |
true |
取得或设置组件是否可见,默认为false。 |
VisibleChanged |
EventCallback<bool> |
— | 事件 取得或设置组件可见性变化时的回调事件。 |
Class |
string |
null |
取得或设置组件的CSS类名,用于自定义样式。 |
Disabled |
bool |
false |
取得或设置组件是否禁用,默认为false。 |
Style |
string |
null |
取得或设置组件的内联样式,用于自定义样式。 |
所有组件均继承
BaseComponent,除上表参数外还支持Class、Style、Disabled、Visible。
扫码关注公众号
扫码加入 QQ 群