环境: 调试器: 1302 快应用预览版: 1070/1100 (2者都测试一样的效果) 设备: RedMi K20 Pro OS: Android 11 MIUI: 12.5.6 NFC 开关已开启,应用中测试NFC时正常拉起授权请求。 问题描述: 按官网描述流程实现: 1)调用tt.getNFCAdapter()获取NFC适配器实例 2)调用NFCAdapter.onDiscovered(function callback)注册贴卡监听回调 3)调用NFCAdapter.startDiscovery(Object object)开始监听贴卡 4)贴卡,onDiscovered回调
实际运行过程,1-3如预期,能拉起NFC授权提示,授权后贴卡。第4步贴卡后,设备有震动反馈,但是 onDiscovered 回调没有触发。 代码如下: <template>
<div class="wrapper">
<text class="title">{{ title }}</text>
<input class="btn" type="button" value="启动NFC" onclick="startNFC" />
</div>
</template>
<script>
import nfc from '@system.nfc'
export default {
private: {
title: '欢迎体验快应用开发',
},
onInit() {
this.$page.setTitleBar({ text: '欢迎体验快应用开发' })
if (this.$page.setMeta) {
this.$page.setMeta({
title: '示例',
description:
'快应用是移动互联网新型应用生态。',
})
}
},
startNFC() {
try {
console.log('registDiscoveryHandler 1')
let nfcadapter = nfc.getNFCAdapter()
nfcadapter.offDiscovered()
console.log('registDiscoveryHandler 注册贴卡回调')
nfcadapter.onDiscovered({
callback: (data) => {
console.log('onDiscovered callback', data)
if (data.id) {
console.log(`id = ` + new Int8Array(data.id))
} else {
console.log(`null of id`)
}
}
})
nfcadapter.startDiscovery({
success: () => {
console.log('startDiscovery success')
},
fail: (data, code) => {
console.log('startDiscovery fail', code)
},
complete: () => {
console.log('startDiscovery complete')
}
});
} catch (ex) {
this.isOnDiscoveredRegisted = false
console.error('registDiscoveryHandler 异常', ex)
}
},
}
</script>
<style lang="less">
.wrapper {
.flex-box-mixins(column, center, center);
.title {
font-size: 8 * @size-factor;
text-align: center;
color: @black;
}
.btn {
width: 90 * @size-factor;
height: 16 * @size-factor;
border-radius: 8 * @size-factor;
background-color: @brand;
color: @white;
font-size: 30px;
margin-top: 16 * @size-factor;
}
}
</style>可以确定手机设备本身是没有问题的,微信小程序中相应的代码在同台手机上可以正常执行。 请帮忙分析下原因,感谢!
|