前端先调用原生,原生处理好结果,然后将数据上传到前端(先后顺序问题)
其他系统端实现的方式:
public void H5CallLiveSurvivalAuth(String param) {
// ToastUtils.show("H5CallLiveSurvivalAuth");
Gson gson = new Gson();
HumanFaceParams humanFaceParams = gson.fromJson(param, HumanFaceParams.class);
AliFace.getInstance().launch(WebViewActivity.this, humanFaceParams.getCertifyId(), new ICallback() {
@Override
public void onResponse(Map<String, String> response) {
// 不管成功失败,都回调
runOnUiThread(() -> {
String responseStr = JSON.toJSONString(response);
webView.loadUrl("javascript:NativeCallLiveSurvivalAuth('" + responseStr + "')");
});
}
});
}
前端调用原生的方法,原生拉着人脸,然后将返回的结果上传到前端
HarmonyOS实现的方法
/**
* @param param
*/
async H5CallLiveSurvivalAuth(param:string): Promise<string> {
// ToastUtil.showToast("H5调用人脸");
let data=JSONUtils.json2Bean(HumanFaceParams,param);
let certifyId=data?.certifyId;
let faceResult: MPFaceResult = await MPFace.startVerify(certifyId);
let toast = '';
if (faceResult.isSuccess()) {
//客户端认证通过,去服务端查询最终结果
toast = faceResult.msg;
}
else {
//认证失败
toast = JSON.stringify(faceResult);
}
SpConstants.TOAST=toast;
return toast;
}
但是如何再次调用方法将返回的结果toast信息上传到前端呢?这个先后顺序如何控制?
参考此api即可
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5\#javascriptproxy