如何优雅地排查华为接触卫士—1错误码

接触卫士(Contact Shield)是HMS Core提供的基于低功耗蓝牙(Bluetooth Low Energy,简称BLE)的接触诊断基础服务。各国政府组织可以使用接触卫士API开发新冠病毒接触跟踪的应用。在保护用户隐私的基础上,实现和其他手机的互通,帮助用户诊断是否接触了病毒感染者,从而减少新冠病毒的蔓延。

接触卫士的工作原理

1

1.   B的手机会根据每天的周期性密钥(Periodic Key)生成动态共享码(Dynamic Sharing Code,简称DSC)集合,再通过BLE向周围广播DSC。

2.   A的手机扫描到B的手机广播的DSC后,记录当前时间戳和蓝牙接收信号强度(Received Signal Strength Indicator,简称RSSI),并将这些数据存储至本地数据库中。

3.   假如B被确诊为COVID-19患者,App获取B的授权后将病毒潜伏期(默认14天)内的周期性密钥上传至App或公共卫生机构指定的服务器。此时,B的周期性密钥称为共享密钥(Shared Key)。

4.   A的App定时从服务器下载确诊者的周期性密钥的压缩文件,并调用接触卫士(Contact Shield)进行接触诊断,并根据App提供的共享密钥推导出确诊者曾经广播的DSC集合。

5.   接触诊断过程中,接触卫士使用第4步中生成的DSC集合去匹配本地数据库中曾保存的过去14天的DSC数据表,匹配结束后生成诊断报告,并通过App告知A接触诊断结果。

根据诊断报告,A便可获知曾经是否与确诊者有过密切接触,以及接触的潜在风险等级。

接触卫士在调用接口的过程中会有返回错误码-1的场景,该场景下可能的错误有很多,在这里给大家分享一些该错误码的排查步骤。

注:遇到-1错误码时可以先查看一下报错的日志,然后过滤搜索HmsNearbyKit_sdk_ContactApiImpl关键字,日志中一般都会包含一个真正错误原因的错误码。

12

1.没有申请接触卫士权限(错误码6004)

原因1

与其他HMS SDK不同,接触卫士SDK需要邮件发送相关信息来开通权限。

申请接触卫士API权限可以参考:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/contactshield-request-access-0000001058448610?ha_source=hms1

原因2

本地项目中的agconnect-services.json文件不匹配。需要重新确认下本地项目中添加的agconnect-services.json文件与实际需要的agconnect-services.json文件是不是同一个。

3

可以去AGC官网上重新下载新的agconnect-services.json文件,然后重新调测。

agconnect-services.json文件下载请参考:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/contactshield-integratesdk-0000001058897058?ha_source=hms1

4

2.生成APK的签名文件(.keystore.jks)与其在AGC上配置的SHA-256信息不一样(错误码6003)

APK签名的文件必须与下方AGC上配置的签名一样才行。

4

配置步骤可以参考:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/contactshield-config-agc-0000001057648627?ha_source=hms1

3.首次调用API时,手机没联网

首次调用接触卫士的API时,如果手机没有连接网络,这种场景下也会返回-1。此场景下,保证网络连接正常后,重新调用接触卫士的API即可。

4.在调用startContactShield()接口后,用户手动取消了弹窗提示

调用startContactShield()接口后,会有如下弹窗,必须选择Allow,才能正常调用接触卫士的API:

5

注:最新版本的接触卫士中错误码已经更新为8105。

5.没有HMS Core APK的定位权限

在调用startContactShield()接口后,除了会弹第4点的弹窗外,如果没有定位权限的话也会弹如下弹窗。同样必须选择“ ALLOW ALL THE TIME” 才能正常调用接触卫士的API。

6

注:最新版本的接触卫士中错误码已经更新为8103。

该权限的设置可以在 设置-应用-应用管理-搜索HMS Core-权限-位置信息 中查看。

5

6.调用putSharedKeyFiles接口,提供的文件格式不对

调用接触卫士的putSharedKeyFiles接口时,传入的List<File> files中的文件存在问题。

该文件的格式以及生成方式与谷歌的Exposure Notifications中相关文件的格式和生成方式是一样的。

谷歌相关文档请参考:

https://developers.google.com/android/exposure-notifications/exposure-key-file-format

https://github.com/google/exposure-notifications-server/blob/main/examples/export/README.md

>>访问华为开发者联盟官网,了解更多相关内容

>>获取开发指导文档

>>华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解华为移动服务最新技术资讯~

猜你喜欢

转载自blog.csdn.net/HUAWEI_HMSCore/article/details/114880093