我的应用在Play商店被拒绝“确保无法启用YouTube视频的后台播放”。我使用了基本的Webview组件并加载了一个youtube页面。播放YouTube电影后,返回主页,youtube电影继续在后台播放。
当应用程序暂停时,如何获得暂停Webview的句柄?
答案 0 :(得分:7)
您可以使用react-native:documentation中的 AppState 。
仅在应用状态为“有效”时显示网页视图(其中包含您的YouTube嵌入版)
import React, {Component} from 'react'
import {AppState, WebView} from 'react-native'
class AppStateExample extends Component {
state = {
appState: AppState.currentState
}
componentDidMount() {
AppState.addEventListener('change', this._handleAppStateChange);
}
componentWillUnmount() {
AppState.removeEventListener('change', this._handleAppStateChange);
}
_handleAppStateChange = (nextAppState) => {
this.setState({appState: nextAppState});
}
render() {
return (
{this.state.appState == 'active' &&
<WebView />
}
)
}
}
如果您使用 Expo ,则无需触及任何本机代码即可。
答案 1 :(得分:2)
好的,所以我最终创建了自己的MyReactWebViewManager
:
public class MyReactWebViewManager extends SimpleViewManager<WebView> {
private static final String REACT_CLASS = "RCTMyWebView";
....
在其中,我使用以下onHostPause覆盖创建了MyReactWebView
:
private static class MyReactWebView extends WebView implements LifecycleEventListener {
...
@Override
public void onHostResume() {
// do nothing
Log.i(REACT_CLASS,"onHostResume");
this.onResume();
}
@Override
public void onHostPause() {
// do nothing
Log.i(REACT_CLASS,"onHostPause");
this.onPause();
}
希望将来可以通过react-native处理。
答案 2 :(得分:0)
只需将此道具添加到网络视图
即可mediaPlaybackRequiresUserAction = {TRUE}
<WebView
mediaPlaybackRequiresUserAction={true}
/>