小米快应用服务框架 com.miui.hybrid BUG 贴卡后 onDiscovered无法触发。 测试环境: 调试器: 1302 快应用预览版: 1070/1100 (2者都测试一样的效果) 设备: RedMi K20 Pro OS: Android 11 MIUI: 12.5.6 服务框架: com.miui.hybrid
问题描述:
按官网描述流程实现:
1)调用tt.getNFCAdapter()获取NFC适配器实例 2)调用NFCAdapter.onDiscovered(function callback)注册贴卡监听回调 3)调用NFCAdapter.startDiscovery(Object object)开始监听贴卡 4)贴卡,onDiscovered回调
实际运行过程,1-3如预期,能拉起NFC授权提示,授权后贴卡。第4步贴卡后,设备有震动反馈,但是 onDiscovered 回调没有触发。
期望结果: 贴卡,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>
切换快应用框架到 org.hapjs.mockup 贴卡后即可触发 onDiscovered回调
请帮忙排查下原因。生产环境发布是否有影响。 |