209
云计算
负载均衡
产品简介
产品价格
快速入门
用户指南
实践操作
常见问题
购买指南
云服务器
产品简介
计费规则
购买指导
控制台使用指南
常见问题
云数据库
产品简介
计费规则
购买指导
快速入门
连接实例
控制台使用指南
对象存储
产品简介
控制台使用指南
程序员百科
Python
百度人脸识别使用指南-人脸实名认证H5端APP内嵌H5兼容性配置

产品推荐:

1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>

2、高防物理服务器20核/16G/50M/500G防御仅350元,点击抢购>>>

3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>>

4、阿里云服务器2核2G3M仅99元/年、2核4G5M仅199元/年,新老同享,点击抢购>>> 

5、腾讯云服务器2核2G4M仅99元/年、新老同享,点击抢购>>>   



点击这里点击这里申请百度智能云特邀VIP帐号,立即体验人脸识别>>>

百度人脸识别使用指南-人脸实名认证H5端APP内嵌H5兼容性配置

APP内嵌H5兼容性配置

如您需要在自研APP中以webview的方式嵌入H5页面,请参照下文进行 iOS 及 Android 手机的兼容性适配。我们对一些需要做的配置进行了处理和封装,以framework(iOS)和Js-Bridge SDK(安卓)的形式提供,提升您的接入效率。

iOS

请您按如下步骤完成SDK集成,接着参照H5方案接入指南完成方案配置和token获取,生成认证H5 URL,使用生成的H5 URL替换示例代码中urlString。

1、配置依赖

  • 将BDAIFaceH5.framework添加到工程中,同时配置依赖库为Embed & Sign iOS1.png

2、配置权限

  • 在Info.plist添加权限配置,否则app运行会崩溃。
名称是否必选说明
Privacy - Camera Usage Description相机权限
Privacy - Microphone Usage Description麦克风权限

3、使用方法

  • 参数释义
方法名返回值说明备注
homeUrl加载H5方案主页地址必要参数
  • 示例代码

在需要调用H5人脸的地方调用该示例代码即可

// 所需访问的H5人脸URL
    NSString *urlString = @"https://ai-face-h5-evaluation.weiyun.baidu.com/face/print/h5demo";
    // 初始化BDH5Browser页面
    BDH5Browser *desController = [[BDH5Browser alloc] init];
    // 设置浏览器URL
    desController.homeUrl = urlString;
    // 展示视图,此处仅根据demo结构采用navgation push的方式展示,可根据各自工程代码结构选择push,present的方式进行。
    [self.navigationController pushViewController:desController animated:YES];

4、SDK及示例demo源码

  • 链接: https://pan.baidu.com/s/1BIpe4jSU1XXf9eJZlcgmmg
  • 提取码: 请联系您的商务经理获取

安卓

请您先参考本文档完成下述步骤,接着参照H5方案接入指南完成方案配置和token获取,生成认证H5 URL,并将H5 URL填写在jsWebview的loadUrl方法。

1、配置依赖

  • 下载jsbridge.aar,放入工程libs目录。 链接: https://pan.baidu.com/s/1bl97bahwzGFiBWwb_7kQPQ 提取码: 请联系您的商务经理获取
  • 如果您使用androidx软件包,请下载以下版本,放入工程libs目录。 链接: https://pan.baidu.com/s/1ye-8uogWS8ijXjSKkLdswQ 提取码: 请联系您的商务经理获取
  • 在app目录下的build.gradle文件中,配置jsbridge.aar依赖。
2、repositories {
    flatDir {
        dirs 'libs'
    }
}
dependencies {
    // jsBridge-SDK.aar
    compile(name: 'lib-jsbridge-1.0-release', ext: 'aar')
}

2、权限

名称是否必选说明
android.permission.INTERNET网络权限
android.permission.CAMERA拍照权限
android.permission.RECORD_AUDIO录音权限

3、使用方法

  • JsWebview作为承载动态页面的容器,在JsBridge-SDK中用于加载web页面、相机&麦克风等相关权限申请功能、调起系统相机拍照&录像功能、返回键事件处理功能。
方法名返回值说明备注
loadUrl()加载h5方案主页地址webview自带方法
checkPermisions()boolean相机&录音权限能力封装:
判断应用是否开启相机权限和录音权限,通过返回值判断是否已开启相关权限。
有权限则返回true,调用loadUrl(),来加载h5主页地址。
没有权限则返回false,方法内部会调用系统方法来申请权限。
Manifest.permission.CAMERA 相机权限
Manifest.permission.RECORD_AUDIO 录音权限
需要调用
onKeyDown()boolean对返回键事件进行处理,用于H5页面回退场景,避免Activity销毁。
需要重写Activity的onKeyDown回调方法,并在onKeyDown方法内部调用此方法。
返回值:true,处理
返回值:false,不处理
需要调用
onPermisonResult()boolean相机权限申请回调:对申请权限的回调进行处理,重写系统的onRequestPermisionResult回调方法,并在onRequestPermisionResult方法内部调用此方法。
通过返回值判断用户是否开启相关权限,用户开启权限则返回true,则调用loadUrl(),来加载h5主页地址。用户未开启权限则返回false,提示申请权限失败。
需要调用
onCaptureResult()系统相机拍照&相机录像能力回调:相机拍照&相机录像回调进行处理,重写系统的onActivityResult回调方法,并在onActivityResult方法内部调用此方法。无返回值。需要调用

4、示例代码

  • 在布局文件中,增加jswebview组件
<RelativeLayout
        android:id="@+id/js_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <com.baidu.ai.face.widget.JsWebView
            android:id="@+id/js_webview"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </RelativeLayout>
  • 在Activity中,导入com.baidu.ai.face.widget.JsWebView
import com.baidu.ai.face.widget.JsWebView
  • 在Actvity中,找到jswebview组件,通过checkPermission方法来判断是否拥有相关权限,有权限则直接加载h5地址,无权限方法内部会申请相关权限。
jsWebview = (JsWebView) findViewById(R.id.js_webview);
        if (jsWebview.checkPermissions()) {
            // 加载H5页面
            jsWebview.loadUrl(mUrl);
        }
  • 在Activity的onRequestPermisionResult调用jswebview的onPermissionsResult方法,对权限回调进行处理,返回值为true,权限申请成功,直接加载h5地址。返回值为false,权限申请失败,申请失败需要增加自己的业务处理逻辑。
@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions,
                                           int[] grantResults) {
        if (jsWebview.onPermissionsResult(requestCode, permissions, grantResults)) {
            // 加载H5页面
            jsWebview.loadUrl(mUrl);
        } else {
            // 权限申请失败,增加失败处理逻辑
        }
    }
  • 在Activity的onKeyDown中调用jswebview的onKeyDown方法,内部封装了返回事件的处理。
@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        return jsWebview.onKeyDown(JsActivity.this, keyCode, event);
    }
  • 在Activity的onActivityResult中调用jswebview的onCaptureResult方法,内部封装了通过相机拍照,通过相机录像的回调处理逻辑。
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        jsWebview.onCaptureResult(requestCode, resultCode, data);
    }


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!