HMS Contact Shield SDK -1 Error Code Troubleshooting Procedure - Huawei Developers

Contact Shield is a basic contact diagnosis service developed based on the Bluetooth low energy (BLE) technology. Global public health institutions can authorize developers to develop COVID-19 contact diagnosis apps using Contact Shield APIs. These apps can interact with other devices while protecting user privacy to check whether a user has been in contact with a person tested positive for COVID-19. If so, the user will be notified and instructed to take relevant measures, effectively controlling the spread of the virus.
Working Principles​
1. The mobile phone of B broadcasts the DSC (Dynamic Sharing Code). The phone can generate a DSC collection based on the periodic key on each day, select a DSC based on the current time, and broadcast the DSC to surrounding devices through BLE.
2. The mobile phone of A receives the DSC broadcast by B. After scanning the DSC broadcast by the mobile phone of B, the mobile phone of A records the current timestamp and received signal strength indicator (RSSI), and stores the data in a local database.
3. If B is diagnosed as a COVID-19 patient, the app obtains authorization from B and uploads the periodic key within the virus incubation period (14 days by default) to the app server or the server specified by a public health institution. In this case, the periodic key of B is called the shared key.
4. The app of A periodically downloads the compressed package of periodic keys of the diagnosed user from the server and calls Contact Shield to perform contact diagnosis. Contact Shield deduces the DSC collection broadcast by the diagnosed person based on the periodic keys provided by the app.
5. During contact diagnosis, Contact Shield uses the DSC collection generated in 4 to match a record in the DSC data table of the last 14 days stored in the local database. After the matching is complete, Contact Shield generates a diagnosis report and notifies A of the contact diagnosis result through the app.
Based on the diagnosis report, A knows whether he or she has been in close contact with the diagnosed user and the potential contact risk level.
When the Contact Shield invokes the interface, the error code -1 is returned. There are many possible causes in this scenario. This section describes the troubleshooting procedure for this error code.
\Note: If the error code -1 is displayed, view the error log and search for the keyword HmsNearbyKit_sdk_ContactApiImpl. Generally, the log contains an error code with the actual error cause.
1. Developer have not applied for the Contact Shield permission (Error code 6004).
Cause 1:
Unlike other HMS SDKs, the Contact Shield SDK requires developers to send related information through emails to grant permissions.
For details about how to apply for the contact guard API permission, see:
https://developer.huawei.com/consum...equest-access-0000001058448610?ha_source=hms1
Cause 2:
The agconnect-services.json file in the local project does not match.
Check whether the agconnect-services.json file added to the local project is the same as the required agconnect-services.json file.
You can download the new agconnect-services.json file from the AGC official website and commission the project again.
For details about how to download the agconnect-services.json file, see:https://developer.huawei.com/consum...-integratesdk-0000001058897058?ha_source=hms1
2. The generated APK signature file (.keystore or .jks file) is different from the SHA-256 information configured on the AGC. (Error code 6003).​
The APK signature file must be the same as the signature configured on the AGC.
The configuration procedure is as follows:
https://developer.huawei.com/consum...ld-config-agc-0000001057648627?ha_source=hms1
3. When the API is invoked for the first time, the mobile phone is not connected to the network.​
When the contact guard API is invoked for the first time, if the mobile phone is not connected to the network, the error code -1 is returned.
In this scenario, ensure that the network connection is normal and invoke the Contact Shield API again.
​4. After the startContactShield() interface is invoked, the pop-up message is manually canceled.​After the startContactShield() interface is invoked, the following dialog box is displayed.
User must select Allow to invoke the Contact Shield API.
Note: The error code in the latest Contact Shield has been updated to 8015.
5. User do not have the location permission of the HMS Core APK.​When the startContactShield() interface is invoked, in addition to the pop-up for point 4, the dialog box shown in the following figure is displayed if you do not have the location permission.
User must select “ALLOW ALL THE TIME”to invoke the Contact Shield API.
Note: The error code in the latest Contact Shield has been updated to 8103.
To view the permission, choose Settings > Apps > Apps > Search HMS Core > Permissions > location.
6. When the putSharedKeyFiles() interface is invoked, the file format provided by the developer is incorrect.​When the putSharedKeyFiles interface of the Contact Shield is invoked, the transferred file in List<File> files is incorrect.
The format and generation method of this file are the same as those in Google's Exposure Notifications.
For more details, you can go to:
l Our official website
l Our Development Documentation page, to find the documents you need
l Reddit to join our developer discussion
l GitHub to download demos and sample codes
l Stack Overflow to solve any integration problems
Original Source

Related

What Can I Do If My Joint Operations App/Game Is Rejected Because the Update Check API (checkAppUpdate) Is Not Called?

Symptom
After my app is submitted for review, it is rejected by Huawei due to the checkAppUpdate API not having been called.
Analysis & Solution
1. Check whether the checkAppUpdate API has been called, by referring to the following documents:
https://developer.huawei.com/consum...lery-connect-Guides/appgallerykit-game-update
https://developer.huawei.com/consum...llery-connect-Guides/appgallerykit-app-update
2. Check whether the obfuscation file configuration meets the document requirements.
https://developer.huawei.com/consum...onfig-obfuscation-scripts-0000001050260710-V5
3. You are advised not to perform operations such as secondary encapsulation, hardening, and log output restriction on the APK submitted for review.
4. Set debuggable in the AndroidManifest.xml file to true during APK packaging.
5. Record the keyword UpdateSDK version is: xxx in logs if log filter is required. When an app is under review, this keyword is checked to determine whether the checkAppUpdate API is called.
https://developer.huawei.com/consum.../AppGallery-connect-Guides/appgallerykit-test

Result Code 22 Reported in Self-check: checkUpdate API Not Integrated

Symptom
When I submitted my app to AppGallery Connect for self-check, the following message was displayed:
MAJOR:22: Integrate the version update API (checkUpdate). If you already integrate the API, check whether the HMS SDK code is obfuscated in the configuration file. For details about how to modify the configuration file, visit https://developer.huawei.com/consum...es/appgallerykit-preparation#h1-1574846682104.
Analysis
To determine the reason for integrating the API, I submitted a ticket to Huawei technical support in the following link:
https://developer.huawei.com/consumer/en/support/feedback
I was told that this API is required for joint operations games and apps for which HUAWEI AppGallery Connect Distribution Service Agreement For Paid Apps is signed. For details about how to integrate the API, please refer to:
Joint operations games:
https://developer.huawei.com/consum...lery-connect-Guides/appgallerykit-game-update
Joint operations apps:
https://developer.huawei.com/consum...llery-connect-Guides/appgallerykit-app-update
If you have not signed HUAWEI AppGallery Connect Distribution Service Agreement For Paid Apps, check whether corresponding resource files for the IAP SDK or DRM SDK have been introduced to your app project. If so, the self-check tool will regard your app as a joint operations app, and prompt you to integrate the checkUpdate API. In this case, delete the related resources and perform the self-check again.
Solution
In addition to joint operations apps that integrate the IAP SDK, other apps have introduced resource files.
Then, after I had deleted the IAP-related resource files, based on the reply from Huawei technical support, the problem was ultimately resolved during self-check.

White Screen Is Displayed When a User Opens an App

Description
A white screen is displayed when a user opens an app.
Cause Analysis
You are advised to analyze the problem from the following aspects:
1. Check whether the route configuration is correct and whether the user is redirected to the expected target page.
2. Check whether the data request API is called.
3. Check whether the callback returns data.
4. Check whether values are assigned to page data and whether bidirectional binding is correct.
5. Check whether the result of the show and if statements is correct.
Solution
1. After the page is modified (for example, the page name is changed or a page is created), check whether the route table is updated synchronously and whether the routes are correctly configured. In addition, modify the route table, switch to the hello word page, and check whether the hello word page is displayed properly.
2. Check whether the page lifecycle function onInit is confused with the app lifecycle function onCreate. If onCreate is used on the page and the data request API is called in onCreate, the API will not be actually executed. To solve this problem, cal the API in onInit instead.
3. The parameters called by the data request API are incorrect, leading to no data callback. Or the fail branch is not processed, leading to no processing of callback data. In both scenarios, no data is obtained. To locate the cause, record logs for subsequent queries after the API is called back.
4. The data returned by the fetch request is a character string, which needs to be converted into JSON data through JSON.parse. You need to check whether the returned result is empty. Otherwise, an error is reported. In addition, pay attention to this in the asynchronous request during API calling to ensure that the value is successfully assigned.
5. You may use show and if to display the page if data is requested and hide the page if no data is requested. In this case, ensure that show and if are correctly set.
Suggestions and Summary
If a problem occurs, you are advised to go to the page, and then check the lifecycle, data obtaining, and value assignment in sequence to locate the problem.

FAQ about Location kit

Q: Is Huawei Map is charging on per call transactions charges?
A: Huawei Map is free of charge, Huawei is not charging any additional charges for any developer to using Huawei Map on their applications.
Q: There are two buttons at the top of the app page for displaying two maps. Click the button to display the Huawei map. Set a location on the map and click the enable button. The app crashes.
A: The lateinit variable is specified in the code. The enable operation is performed without the Map being completely loaded. As a result, the variable is used before being initialized. As a result, an exception is reported.
Essential cause: The Hwawei map needs to be loaded and displayed. Do not add markers during the loading process. Otherwise, exceptions may occur.
Q: After the integration is completed based on the development document, the fence notification message does not trigger callback. Geofence verification uses simulated locations.
A: The fence uses low-level positioning information, and does not support simulated positions. Analysis of the code shows that the use of broadcasts is not registered in the manifest. After the broadcast is registered, the callback is still not triggered. Then, the problem is caused by repeated app installation. Restart the phone to resolve the problem. The geo-fencing is triggered successfully, and the notification message is displayed properly.

Redelivery Button Next to the Failed Order Does Not Work?

Below is an issue that was recently reported on, the developer in question wrote the below about what happened when they attempted to use the redelivery button on the failed orders report.
Our project integrated In-App Purchases. When I viewed the AppGallery Connect report, I found that there is a failed order data, and a redelivery button next to it. I thought the problem would be resolved after I clicked on the button.
However, nothing happened after I clicked on the button. Our server did not call back the payment result to trigger the redelivery.
Solution​In this case, you can submit a ticket to contact with our Huawei technical support.
In our own game’s QQ group, I asked the SDK technical support about this case, and got a quick reply:
The redelivery button works when the integrated IAP SDK version is 2.X and the payment callback address has been configured for the game. Clicking on the button will trigger the payment callback on the game server. The game server then redelivers the product. Tips: The IAP SDK 2.X will be removed from the market. If you are still using the old version, update the SDK as soon as possible.
If the version of the IAP SDK is 3.X or later (our integrated version is 5.0), the redelivery button does not work, and you’ll need to trigger the redelivery mechanism in the following scenarios:
When the app launches.
When the result code -1 (OrderStatusCode.ORDER_STATE_FAILED) is returned for a purchase request.
When the result code 60051 (OrderStatusCode.ORDER_PRODUCT_OWNED) is returned for a purchase request.
The client then calls the obtainOwnedPurchases API to query the failed order, and sends the data to the server, which will redeliver the product.
References:​For details about the redelivery mechanism for IAP SDK 3.X or later, please refer to Redelivery Process for Consumables.

Categories

Resources