2016-04-03 12 views
4

Uygulamam, "YouTube videolarının arka planda oynatılmasını sağlamadığından emin olun" için oyun deposunda reddedildi. Temel Webview bileşenini kullandım ve bir youtube sayfası yükledim. Youtube filmini oynadıktan ve ana sayfaya geri döndükten sonra, youtube filmi arka planda çalmaya devam ediyor.Nasıl Yerel Android Webview'in arka planda Youtube'u çalıştırmasını engellersiniz?

Uygulama duraklatıldığında Web görünümünü duraklatmak için nasıl bir tanıtıcı alabilirim?

+0

Sadece bir takip ... Aynı konuya sahibim ve bu nedenle başvurum reddedildi. Tam kodu özel bileşeninize bırakabilirsiniz. –

cevap

1

Tamam, bu yüzden oluşturarak sona erdi benimkinin MyReactWebViewManager:

public class MyReactWebViewManager extends SimpleViewManager<WebView> { 

private static final String REACT_CLASS = "RCTMyWebView"; 

.... 

Ve içinde, ben şu onHostPause geçersiz kılma ile MyReactWebView oluşturuldu:

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(); 
    } 

Umarım, bu tepki tarafından ele alınacaktır Gelecekte -native.

+0

Bunu nasıl yaptığınızı detaylandırır mısınız? Ben tam olarak aynı sorunu var – Greg

+0

@Greg Umarım zaten çözdünüz, ama eğer durum böyle değilse, yerel modülü gerekli ve bunu bir JavaScript modülü olarak dışa aktarmanız gerekir: module.exports = requireNativeComponent ('RCTMyWebView', null); Daha fazla bilgi için [bu sayfa] 'ya (https://facebook.github.io/react-native/docs/native-components-ios.html) başvurun. –

0

Basitçe web görünümüne Sen den AppState kullanabilirsiniz

<WebView 
    mediaPlaybackRequiresUserAction={true} 
/> 
1

= {true}

mediaPlaybackRequiresUserAction bu pervane eklemek tepki yerli: documentation.

Ve uygulama devlet 'aktif'

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 /> 
     } 

    ) 

    } 

} 

Eğer Expo ile çalışıyorsanız, bu iyidir, gerek herhangi dokunmak yalnızca (YouTube embed içerir) web görüntülemesini göstermek yerel kod.

+0

Bu, ancak yan etkisi diğer ekranlara geçmek ve daha sonra geri dönmek için videoda başlamak zorunda (kullanıcı webview yok, konumunuzu kaydetmez) etmektir. – eculeus

İlgili konular