Appstate продолжает получать изменения в React Native для Android ⇐ Android
Appstate продолжает получать изменения в React Native для Android
Я работаю над собственным проектом React и получаю разрешения на определение местоположения. Кроме того, мне нужно всегда отслеживать разрешения на определение местоположения, например, если пользователь предоставил разрешения на доступ после установки приложения, а затем через некоторое время пользователь перешел к настройкам приложения в настройках устройства и отключил/отозвал разрешения. Опять же, как только приложение переходит из фонового режима на передний план, мне нужно проверить разрешение на основе этого. Необходимо показывать сообщения.
Итак, я использую Appstate. Но, как ни странно, в Android после установки приложения если пользователь отклонил разрешение, установив флажок «Больше не показывать», состояние приложения продолжает меняться с фоном и активностью всегда. Это продолжается в цикле.
comComponentDidMount = async () => { AppState.addEventListener('change', this.handleAppStateChange); }; компонентWillUnmount() { AppState.removeEventListener('change', this.handleAppStateChange); Geolocation.clearWatch(this.watchID); } handleAppStateChange = асинхронный nextAppState => { const {appState} = this.state; console.log('nextAppState -->', nextAppState); console.log('appState -->', appState); if (appState === 'активный') { // сделай это это.showLoader(); дождитесь этого.requestAndroidLocationPermission(); } else if (appState === 'background') { // сделай это } else if (appState === 'неактивно') { // делаем что-то еще } this.setState({appState: nextAppState}); }; requestAndroidLocationPermission = асинхронный () => { пытаться { const предоставлено = ожидайте PermissionsAndroid.request( РазрешенияAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, {}, ); if (предоставлено === PermissionsAndroid.RESULTS.GRANTED) { this.getLatitudeLongitude(); } else if (предоставлено === PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN) { это.hideLoader(); this.setState({ errorMessage: 'Разрешение на определение местоположения отклонено', isLoading: ложь, }); } еще { это.hideLoader(); this.requestAndroidLocationPermission(); } } поймать (ошибиться) { console.warn(ошибка); } }; Печать продолжается (цикл) после того, как отказано в разрешении с помощью параметра «Больше не показывать»
appState --> активно следующееAppState --> фон состояние приложения -> активно следующееAppState --> фон состояние приложения -> активно следующееAppState --> фон состояние приложения -> активно Это продолжается и никогда не прекращается.
Как с этим справиться? Есть предложения?
Я работаю над собственным проектом React и получаю разрешения на определение местоположения. Кроме того, мне нужно всегда отслеживать разрешения на определение местоположения, например, если пользователь предоставил разрешения на доступ после установки приложения, а затем через некоторое время пользователь перешел к настройкам приложения в настройках устройства и отключил/отозвал разрешения. Опять же, как только приложение переходит из фонового режима на передний план, мне нужно проверить разрешение на основе этого. Необходимо показывать сообщения.
Итак, я использую Appstate. Но, как ни странно, в Android после установки приложения если пользователь отклонил разрешение, установив флажок «Больше не показывать», состояние приложения продолжает меняться с фоном и активностью всегда. Это продолжается в цикле.
comComponentDidMount = async () => { AppState.addEventListener('change', this.handleAppStateChange); }; компонентWillUnmount() { AppState.removeEventListener('change', this.handleAppStateChange); Geolocation.clearWatch(this.watchID); } handleAppStateChange = асинхронный nextAppState => { const {appState} = this.state; console.log('nextAppState -->', nextAppState); console.log('appState -->', appState); if (appState === 'активный') { // сделай это это.showLoader(); дождитесь этого.requestAndroidLocationPermission(); } else if (appState === 'background') { // сделай это } else if (appState === 'неактивно') { // делаем что-то еще } this.setState({appState: nextAppState}); }; requestAndroidLocationPermission = асинхронный () => { пытаться { const предоставлено = ожидайте PermissionsAndroid.request( РазрешенияAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, {}, ); if (предоставлено === PermissionsAndroid.RESULTS.GRANTED) { this.getLatitudeLongitude(); } else if (предоставлено === PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN) { это.hideLoader(); this.setState({ errorMessage: 'Разрешение на определение местоположения отклонено', isLoading: ложь, }); } еще { это.hideLoader(); this.requestAndroidLocationPermission(); } } поймать (ошибиться) { console.warn(ошибка); } }; Печать продолжается (цикл) после того, как отказано в разрешении с помощью параметра «Больше не показывать»
appState --> активно следующееAppState --> фон состояние приложения -> активно следующееAppState --> фон состояние приложения -> активно следующееAppState --> фон состояние приложения -> активно Это продолжается и никогда не прекращается.
Как с этим справиться? Есть предложения?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение