Estoy tratando de contar en minutos y horas cuánto tiempo está un usuario en la aplicación y mostrarlo. Tengo la aplicación contando minutos. Parece que no puedo averiguar cómo rastrear cuándo la aplicación está activa o no. Hay documentación sobre appState pero no puedo entender cómo incorporar esto en el conteo. Aquí está mi código:
function Overview() { const appState = useRef(AppState.currentState); const [appStateVisible, setAppStateVisible] = useState(appState.current); const [count, setCount] = useState(0); const [active, setActive] = useState(false); useEffect(() => { const subscription = AppState.addEventListener("change", nextAppState => { if (appState.current.match(/inactive|background/) && nextAppState === "active") { setActive(true); } appState.current = nextAppState; setAppStateVisible(appState.current); console.log("AppState", appState.current); }); return () => { subscription.remove(); }; }, []); useEffect(() => { const id = setInterval(() => setCount((oldCount) => oldCount + 1), 1000); return () => { clearInterval(id); }; }, []); return ( <View style={{margin: 32}}> <View style={{marginBottom: 32}}> <Text style={{fontSize: 36, fontFamily: 'Roboto_400Regular'}}>Great!</Text> <Text style={{fontSize: 16, color: '#878787', fontFamily: 'Roboto_400Regular'}}>Average mood 23%</Text> </View> <View style={{flexDirection: 'row', justifyContent: 'space-between'}}> <OverviewContainer title="Weather" value="14 C" /> <OverviewContainer title="Time on app" value={`${(count/60).toFixed(0).toString()} mins`} /> </View> </View> ); }Cualquier ayuda para poner los dos juntos sería genial, gracias :)
También puede acceder al estado actual de la aplicación. ¿Qué tal algo como
setCount(if AppState.currentState is active then add one)