在移动应用(App)中集成金融级实人认证H5移动端SDK时,可能会因为内嵌浏览器(WebView)版本、内置权限等原因而无法兼容。本文旨在介绍如何在App配置WebView使用相机设备、允许网页视频播放等权限,以减少与H5移动端SDK兼容性问题。
Android配置
由于Android生态碎片化严重,App内使用Android原生Webview调起系统摄像头可能存在一些兼容性问题,例如摄像头被拒绝,重新授权无法唤起刷脸页面等。以下是关于如何解决这些兼容性问题的步骤。
在AndroidManifest.xml文件声明以下权限。
<!--应用访问相机权限。--> <uses-permission android:name="android.permission.CAMERA" /> <!--应用访问网络权限。--> <uses-permission android:name="android.permission.INTERNET" />
设置Webview。
重写
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()); } } })
设置WebView允许网页视频自动播放。
// 允许自动播放 webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
iOS配置
在Info.plist中声明访问设备的摄像头权限。
.NSCameraUsageDescription
设置Webview。
通过
WKWebViewConfiguration
类配置允许使用相机。WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init]; config.allowsInlineMediaPlayback = YES;
设置允许网页视频自动播放以及网页内播放。
// 允许视频自动播放 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 | ||
百度 | ||
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 |