Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

aluracar não recebe a foto

Estou testando, em meu celular (asus zenfone 2 ze551ml), o projeto finalizado de aluracar, disponibilizado para download em ionic 3 part 2.Ao iniciar o aplicativo, em um primeiro momento, e acessar o perfil aparece, aparece a imagem de "assets/img/avatar-padrao.jpg", clico no botão para acessar a câmera tiro a foto (a foto é salva na galeria com a orientação correta). No entanto, após confirmar a imagem a pagina de perfil não consegue recebe-la. A aplicação não gera exceção para o catch, apenas executa o seguinte trecho:

.then(fotoUri => {
      console.log(fotoUri);
      fotoUri = normalizeURL(fotoUri);
      console.log(fotoUri);
      this._usuariosService.salvaAvatar(fotoUri);
    })

Ambos os "console.log(fotoUri)" acima mostram "file:///storage/emulated/0/Android/data/io.ionic.starter/cache/1536088721845.jpg". Não consigo usar a imagem da câmera na aplicação, alguém pode me ajudar?

Obrigado pela atenção.

7 respostas

Boa noite, Leonardo! Como vai?

Na época que eu gravei o curso lembro que eu estava tendo um problema exatamente assim e tbm era zenfone que eu estava usando. No meu caso, se não me falha a memória, o problema era que eu estava usando o Ionic DevApp para testar a aplicação, mas havia esquecido que o Ionic DevApp não dá suporte ao plugin de câmera.

Então a pergunta é justamente: como vc está fazendo para testar a aplicação? Está fazendo o build nativo ou usando o Ionic DevApp?

Aguardo a sua resposta para tentar te ajudar, meu aluno!

Grande abraço!

Bom dia Gabriel, vou bem. Neste caso rodei a aplicação por meio da linha de comando

ionic cordova run android --livereload -c
solução!

Leonardo, vc poderia tentar gerar o apk fazendo o build nativo como mostrado durante o curso e ver se o resultado é o mesmo? Daí manda um retorno aqui sobre o resultado para eu ver o que posso fazer pra te ajudar.

Gerei o APK através do comando ionic cordova build android, passei para o dispositivo e instalei.

Resultado: Funcionou tudo como deveria, a foto aparece em perfil e no menu do app, fechei e abri novamente o aplicativo e o arquivo de foto do usuário persiste como deveria.

Agradeço desde já, isso fez o app funcionar.

Esperava que o resultado fosse o mesmo. No entanto, ao testar o aplicativo, notei que há diferença entre o app gerado porionic cordova run android e o app gerado por ionic cordova build android, muda o Storage usado (os dados de persistência são diferentes) e quando tento iniciar o aplicativo logo após interromper o run android mostra a mensagem "The connection to the server was unsuccessful. (http://192.168.1.112:8100)". Quando instalo a aplicação pelo APK ela funciona normalmente. Por que existe esse efeito?

Opa, Leonardo! Quando vc relatou o seu problema e disse que estava executando o seu código com ionic cordova run android sem sucesso eu imaginei que fosse esse o problema. O fato é que a documentação da Ionic CLI referente aos comandos ionic cordova run e ionic cordova build não deixa claro se há diferença entre eles quanto a aplicação que é executada no dispositivo. E eu mesmo não costumo utiliza o ionic cordova run pois existe o Ionic DevApp e quando eu preciso testar uma funcionalidade nativa, faço o build nativo como te orientei.

No entanto, lendo o seu relato, principalmente no que diz respeito à mudança na forma do armazenamento e tendo em vista a documentação do Ionic referente ao Storage que diz:

When running in a native app context, Storage will prioritize using SQLite, as it's one of the most stable and widely used file-based databases, and avoids some of the pitfalls of things like localstorage and IndexedDB, such as the OS deciding to clear out such data in low disk-space situations.

When running in the web or as a Progressive Web App, Storage will attempt to use IndexedDB, WebSQL, and localstorage, in that order.

O que eu imagino que esteja acontecendo é que ao executar ionic cordova run a Ionic CLI esteja executando uma aplicação web no dispositivo fazendo com que o recurso da câmera não funcione. E quando é executado o ionic cordova build, aí sim a aplicação passa a ser executada em contexto nativo, fazendo com que a câmera funcione como deveria e o armazenamento mude como vc observou.

Em todo caso, realmente é um caso mto estranho e talvez seja um bug da Ionic CLI. Dessa forma, o que eu sugiro pra vc é que abra uma issue no repositório da Ionic CLI informando o ocorrido para que eles fiquem cientes. Daí se realmente for um bug eles poderão corrigir em versões futuras da ferramenta.

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Entendi. Já abria uma issue lá no fórum que citou, obrigado por me direcionar.

Por nada, Leonardo! Sempre que precisar de alguma ajuda é só mandar aqui no fórum!

Grande abraço e bons estudos, meu aluno!