在行動裝置 App(App)中整合ID Verification 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鍵,並提供一段清晰的解說文字,用於告知使用者應用為何需要訪問網路攝影機許可權。例如:<key>NSCameraUsageDescription</key> <string>我們需要訪問您的網路攝影機,以便拍攝照片或掃描二維碼。</string>設定 WebView 的 WKWebViewConfiguration,並設定允許網頁視頻自動播放以及網頁內播放:
Swift
// 通過WKWebViewConfiguration類配置允許使用相機 let config = WKWebViewConfiguration() config.allowsPictureInPictureMediaPlayback = true // 允許視頻自動播放 let myAudiovisualMediaType: WKAudiovisualMediaTypes = [] config.mediaTypesRequiringUserActionForPlayback = myAudiovisualMediaType // 允許視頻在網頁內播放(非全屏播放) config.allowsInlineMediaPlayback = trueObjective-C
// 通過WKWebViewConfiguration類配置允許使用相機 WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init]; config.allowsInlineMediaPlayback = YES; // 允許視頻自動播放 config.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone; // 允許視頻在網頁內播放(非全屏播放) config.allowsInlineMediaPlayback = YES;
WebRTC相容性支援列表
在iOS 14.3及以上版本,WKWebView增加了對WebRTC的支援。
因此,微信、第三方瀏覽器和App需要在iOS 14.3及以上版本上才能支援WebRTC功能。
對於第三方iOS端App,若未使用WKWebView,則需查看所用的WebView是否支援WebRTC功能來確定是否支援WebRTC。
用戶端 | 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 |