Common Issues and Solutions
- HTTPS is required.
- Certain adaptations are needed when using via WebView on Android and iOS. The solutions are as follows:
Android Solution:
For native WebView in Android 5.0 and later versions, camera permissions are required at the app level.
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />
The webpage will pop up a request for camera permission in real-time, which needs to be allowed in the WebView authorization handling.
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onPermissionRequest(final PermissionRequest request) {
Log.d("MainActivity", "onPermissionRequest");
MainActivity.this.runOnUiThread(new Runnable() {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void run() {
request.grant(request.getResources());
}
});
}
});
If using other browser kernels, configuration should be carried out according to the requirements of the relevant browser.
iOS Solution:
It is recommended to use WKWebView.
// Initialize configuration object
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
// Default is NO. This value determines whether to use inline HTML5 video playback or native full-screen controls
configuration.allowsInlineMediaPlayback = YES;
// Auto-play, no user gesture required to start playback
if (@available(iOS 10.0, *)) {
// WKAudiovisualMediaTypeNone means audio and video playback does not require any user gesture, i.e., auto-play
configuration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone;
} else {
configuration.requiresUserActionForMediaPlayback = NO;
}
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];