首先通过wx.getNFCAdapter()来获取nfc实例
然后调用startDiscovery获取当前手机nfc状态
已经打开了nfc的就可以调用监听方法onDiscovered
监听到数据后setData把数据展示出来就ok了,方法如下
nfc() { const nfc = wx.getNFCAdapter() this.nfc = nfc let _this = this function discoverHandler(res) { const data = new Uint8Array(res.id) let str = "" data.forEach(e => { let item = e.toString(16) if (item.length == 1) { item = '0' + item } item = item.toUpperCase() str += item }) _this.setData({ newCardCode: str }) wx.showToast({ title: '读取成功!', icon: 'none' }) } nfc.startDiscovery({ success(res) { wx.showToast({ title: 'NFC读取功能已开启!', icon: 'none' }) nfc.onDiscovered(discoverHandler) }, fail(err) {if(!err.errCode){ wx.showToast({ title: '请检查NFC功能是否正常!', icon: 'none' }) return } switch (err.errCode) { case 13000: wx.showToast({ title: '设备不支持NFC!', icon: 'none' }) break; case 13001: wx.showToast({ title: '系统NFC开关未打开!', icon: 'none' }) break; case 13019: wx.showToast({ title: '用户未授权!', icon: 'none' }) break; case 13010: wx.showToast({ title: '未知错误!', icon: 'none' }) break; } } }) },
nfcRead
()
{
console
.
log(
'
nfc
')
const
nfc
=
wx
.
getNFCAdapter()
this
.
nfc
=
nfc
let
_this
=
this
function
discoverHandler
(
res
)
{
console
.
log(
'
discoverHandler
'
,
res)
const
data
=
new
Uint8Array(
res
.
id)
let
str
=
""
data
.
forEach(
e
=>
{
let
item
=
e
.
toString(
16)
if (
item
.length
==
1)
{
item
=
'
0
'
+
item
}
item
=
item
.
toUpperCase()
console
.
log(
item)
str
+=
item
})
_this
.
setData(
{
newCardCode
:
str
})
console
.
log(
str)
wx
.
showToast(
{
title
:
'
读取成功!
'
,
icon
:
'
none
'
})
}
nfc
.
startDiscovery(
{
success
(
res
)
{
console
.
log(
res)
wx
.
showToast(
{
title
:
'
NFC读取功能已开启!
'
,
icon
:
'
none
'
})
nfc
.
onDiscovered(
discoverHandler)
},
fail
(
err
)
{
console
.
log(
'
failed to discover:
'
,
err)
if(
!
err
.
errCode)
{
wx
.
showToast(
{
title
:
'
请检查NFC功能是否正常!
'
,
icon
:
'
none
'
})
return
}
switch (
err
.
errCode)
{
case
13000
:
wx
.
showToast(
{
title
:
'
设备不支持NFC!
'
,
icon
:
'
none
'
})
break;
case
13001
:
wx
.
showToast(
{
title
:
'
系统NFC开关未打开!
'
,
icon
:
'
none
'
})
break;
case
13019
:
wx
.
showToast(
{
title
:
'
用户未授权!
'
,
icon
:
'
none
'
})
break;
case
13010
:
wx
.
showToast(
{
title
:
'
未知错误!
'
,
icon
:
'
none
'
})
break;
}
}
})
},