App内集成H5移动端SDK兼容性配置

在移动应用(App)中集成金融级实人认证H5移动端SDK时,可能会因为内嵌浏览器(WebView)版本、内置权限等原因而无法兼容。本文旨在介绍如何在App配置WebView使用相机设备、允许网页视频播放等权限,以减少与H5移动端SDK兼容性问题。

Android配置

由于Android生态碎片化严重,App内使用Android原生Webview调起系统摄像头可能存在一些兼容性问题,例如摄像头被拒绝,重新授权无法唤起刷脸页面等。以下是关于如何解决这些兼容性问题的步骤。

  1. 在AndroidManifest.xml文件声明以下权限。

    <!--应用访问相机权限。-->
    <uses-permission android:name="android.permission.CAMERA" />
    <!--应用访问网络权限。-->
    <uses-permission android:name="android.permission.INTERNET" />
  2. 设置Webview。

    1. 重写onPermissionRequest()方法,允许网页申请权限弹窗回调。

      对于基于WebView的网页应用,由于权限管理是由浏览器负责,用户访问H5网页调用摄像头时,如果用户拒绝了该权限请求,用户再次打开网页调用摄像头时,默认提示拒绝访问。因此您可以通过重写onPermissionRequest()方法,自定义处理网页权限请求。示例如下:

      webView.setWebChromeClient(new WebChromeClient(){
          @Override
          public void onPermissionRequest(PremissionRequest request) {
              if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                  // 检查当前设备系统版本是否在Android 5.0及以上
                  // 如果是,则直接授予网页请求的所有权限。示例仅供参考,请根据实际情况重写。
                  request.grant(request.getResources());
              }
          }
      })
    2. 设置WebView允许网页视频自动播放。

      // 允许自动播放
      webView.getSettings().setMediaPlaybackRequiresUserGesture(false);

iOS配置

  1. 在Info.plist中声明访问设备的摄像头权限。

    .NSCameraUsageDescription
  2. 设置Webview。

    1. 通过WKWebViewConfiguration类配置允许使用相机。

      WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
      config.allowsInlineMediaPlayback = YES;
    2. 设置允许网页视频自动播放以及网页内播放。

      // 允许视频自动播放
      let myAudiovisualMediaType: WKAudiovisualMediaTypes = []
      config.mediaTypesRequiringUserActionForPlayback = myAudiovisualMediaType;
      
      // 允许视频在网页内播放(非全屏播放)
      config.allowsInlineMediaPlayback = true;
      // 允许视频自动播放
      config.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone;
      
      // 允许视频在网页内播放(非全屏播放)
      config.allowsInlineMediaPlayback = YES;

WebRTC兼容性支持列表

  • 在iOS 14.3及以上版本,WKWebView增加了对WebRTC的支持。因此,微信、第三方浏览器和App需要在iOS 14.3及以上版本上才能支持WebRTC功能。对于第三方iOS端App,若未使用WKWebView,则需查看所用的WebView是否支持WebRTC功能来确定是否支持WebRTC。

  • H5移动端接入方案提供了降级功能,可以通过应用系统服务端调用实人认证服务端发起认证(InitFaceVerify)时传入的ProcedurePriority参数进行控制,当通过移动端H5方式认证出现WebRTC或者Webassembly不兼容时,将按照参数设置的策略实施降级策略。

客户端

Android版本

iOS版本

Edge

Android 4.0及以上版本

iOS 14.3及以上版本

FireFox

Chrome

Opera

QQ

百度

Android Browser 5.0+

Safari

不支持

iOS 11及以上版本

UC

Android 4.0及以上版本

不支持

UC极速浏览器

厂商内置浏览器

小米、三星等部分机型支持

微信(App)

Android 4.0及以上版本

iOS 14.3及以上版本

App

Android 4.0及以上版本且使用的WebView支持WebRTC

iOS 14.3及以上版本且使用iOS自带WKWebView