nfc开发uniapp
NFC开发在UniApp中的实现方法
UniApp支持通过原生插件或HTML5 API实现NFC功能,具体方案取决于目标平台和需求。
原生插件方案(推荐跨平台使用)
安装uni-app官方或第三方NFC插件,例如uni-nfc。在manifest.json中配置原生模块权限,调用插件提供的API实现读写操作。
// 示例:监听NFC标签
const nfc = uni.requireNativePlugin('uni-nfc');
nfc.startDiscovery({
success: res => console.log('发现标签:', res.tag),
fail: err => console.error(err)
});
H5方案(仅限Android Chrome)
通过Web NFC API实现,需注意浏览器兼容性。在pages.json中配置HTTPS强制要求,使用NDEFReader类进行操作。
// 示例:读取NFC标签
const reader = new NDEFReader();
reader.scan().then(() => {
reader.onreading = event => {
console.log('NDEF消息:', event.message);
};
});
平台差异与注意事项
- Android:需在
AndroidManifest.xml中添加<uses-permission android:name="android.permission.NFC"/> - iOS:仅支持有限场景(App内读取NDEF格式),需在
Info.plist中添加NFCReaderUsageDescription - 微信小程序:目前无官方NFC API,需通过原生插件封装
调试与兼容性处理
真机调试时需开启NFC功能,部分机型需额外配置intent-filter。H5方案需注意:
- Chrome for Android 89+版本支持
- 网站必须部署HTTPS
- 用户需手动授权NFC权限
典型应用场景代码
实现NDEF文本写入的示例:
// 写入文本记录
const writer = new NDEFWriter();
writer.write({
records: [{ recordType: "text", data: "Hello NFC" }]
}).then(() => {
uni.showToast({ title: "写入成功" });
});
扩展能力建议
对于复杂需求如非NDEF格式处理,建议通过原生插件实现。可结合plus.android调用原生API:
const Context = plus.android.importClass('android.content.Context');
const nfcAdapter = plus.android.invoke(
Context.getSystemService(),
'getSystemService',
'nfc'
);
注意实际开发时应处理权限申请、设备兼容性检查等边界情况,iOS需使用Core NFC框架的特殊调用方式。







