Problema com react-native-gps-state

13 respostas
react-nativejavascript
Joao_Antonio1

Estou trabalhando na refatoração de um app react-native 0.59.9 para a versão mais recente 0.72.6, até então tudo ocorrendo bem, porém eu remove essa biblioteca pois a mesma da diversos erros durante o build de desenvolvimento, mesmo seguindo o guia de instalação, a mesma se encontra com problemas, e neste app era fundamental ter o listiner dessa biblioteca para ficar com vendo as alterações de status do GPS, como quando a permissão foi rejeitada ou quando o usuário desativa o Serviço de Localização nas configurações do telefone. Pois como a mesma envia um id de status a aplicação já esta preparada para este tipos de problema, alguém sabe de alguma outra biblioteca que substitua essa ou algo que eu possa fazer na aplicação para usar?

13 Respostas

rodriguesabner

qual erro tá dando?

Joao_Antonio1

Cara n sei o que eu fiz agora consegui instalar ele normalmente e agora foi, provavelmente poderia ser algum outro problema, porem ao tentar rodar esse codigo que esta dentro da biblioteca ele nao funciona

componentWillMount(){
	GPSState.addListener((status)=>{
		switch(status){
			case GPSState.NOT_DETERMINED:
				alert('Please, allow the location, for us to do amazing things for you!')
			break;

			case GPSState.RESTRICTED:
				GPSState.openLocationSettings()
			break;

			case GPSState.DENIED:
				alert('It`s a shame that you do not allowed us to use location :(')
			break;

			case GPSState.AUTHORIZED_ALWAYS:
				//TODO do something amazing with you app
			break;

			case GPSState.AUTHORIZED_WHENINUSE:
				//TODO do something amazing with you app
			break;
		}
	})
	GPSState.requestAuthorization(GPSState.AUTHORIZED_WHENINUSE)
}

componentWillUnmount(){
	GPSState.removeListener()
}
Erro
 WARN  `new NativeEventEmitter()` was called with a non-null argument without the required `addListener` method.
 WARN  `new NativeEventEmitter()` was called with a non-null argument without the required `removeListeners` method.
Joao_Antonio1

Eu testei em componente funcional também usando

useEffect(() => {
    return () => {
    };
  }, []);
rodriguesabner

Mas dá erro? Ou só não funciona? Como estão as permissões?

Joao_Antonio1

Sim da erro, tentando usar dessa forma ai eu não obtenho nenhuma informação, e as permissões já foram concedidas

rodriguesabner

qual erro???

Joao_Antonio1
WARN  `new NativeEventEmitter()` was called with a non-null argument without the required `addListener` method.
 WARN  `new NativeEventEmitter()` was called with a non-null argument without the required `removeListeners` method
rodriguesabner

Mas isso não é um erro, é só um WARN do proprio RN

Joao_Antonio1

mas o que posso modificar da biblioteca para remover isso?

rodriguesabner

Então… quando vc tira esse trecho o warn para? pq as vezes pode ser em outra lib tb. Digo isso pq tem exatamente as duas referencias de add e remove ali.


Caso tenha ctz q seja nessa lib, vc pode inserir isso dentro da classe (android):

// Required for rn built in EventEmitter Calls.
    @ReactMethod
    public void addListener(String eventName) {

    }

    @ReactMethod
    public void removeListeners(Integer count) {

    }
rodriguesabner

Agora o não funcionamento correto da lib, quando vc dá um console.log no status, acontece algo? ou simplesmente nem entra ali na funcao do addListener?

Joao_Antonio1

pior que a bilioteca já esta com isso lá, estava supeitando que poderia ser a chamada no NativeModule mesmo la que esteja diferente

Isso aqui é um exemplo da biblioteca q estou criando, eu fiz dessa forma o listener que escuta as informações da musica, creio que talvez se fizer dessa forma resolva o problema

useEffect(() => {
    const musicPositionListener = ({progress, position, duration}: any) => {
      setMusicPosition(formatTime(position));
      setCurrentProgress(progress);
    };
    DeviceEventEmitter.addListener('onProgressUpdate', musicPositionListener);
    return () => {
      DeviceEventEmitter.removeAllListeners('onProgressUpdate');
    };
  }, []);
rodriguesabner

eu imaginei…


é uma possibilidade.


em relação ao que falei, chegou a tentar? dar uma debugada mais manual

Criado 9 de novembro de 2023
Ultima resposta 9 de nov. de 2023
Respostas 13
Participantes 2