Problema com react-native-gps-state

13 respostas
react-nativejavascript
J

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

R

qual erro tá dando?

J

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.
J

Eu testei em componente funcional também usando

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

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

J

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

R

qual erro???

J
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
R

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

J

mas o que posso modificar da biblioteca para remover isso?

R

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) {

    }
R

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?

J

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');
    };
  }, []);
R

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