Seu desafio é escrever uma aplicação totalmente nativa para mostrar condições metereológicas para cidades de vários lugares do mundo. Abaixo fornecemos dois mockups que ilustram o que esperamos : Pontos importantes que (eventualmente) não estão nas imagens
- Os dados de condições metereológicas virão do OpenWheaterMap. Você irá precisar criar uma API KEY para poder realizar as requisições
- A aplicação deve iniciar no modo lista, e a consulta por condições climáticas deverá ser feita a partir da localização atual do usuário, voltando dados metereológicos das cidades próximas em um raio de 50km. Use as imagens fornecidas pela API para montar os ícones.
- O usuário pode alternar entre medidas de temperatura (Celsius / Farenheit). A unidade de medida escolhida deve estar consistente em ambos os modos de visualização. Ao trocar a unidade de medida, o ícone que a representa na UINavigationBar deve mudar adequadamente.
- O usuário pode alternar entre as visualizações de mapa e lista, e essas devem mostrar os mesmos dados. Ao trocar o modo de visualização, o ícone que o representa na UINavigationBar deve mudar também.
- No modo de visualização pelo mapa, deverá ser fixado um nível de zoom adequado de modo a mostrar o maior número de resultados no raio de 50km, correspondente à pequisa de interesse. Adicionalmente, quando o usuário caminhar no mapa, uma nova pesquisa deve ser feita com o centro na posição de interesse.
- No modo lista, os resultados devem estar ordenados de acordo com a distância da cidade em relação ao usuário. Esse valor de distância deve ser mostrado para cada resultado da pesquisa.
O que iremos avaliar
- (1) Se a sua aplicação funciona como esperamos
- (2) A qualidade e o estilo do seu código, juntamente com a arquitetura da sua solução
- (3) Se você teve carinho com a UI do seu app (adotando as Human Interface Guidelines do iOS e com boa UX)
- (4) Se você utiliza componentes, ferramentas e animações modernos presentes no SDK do iOS
- (5) Se você lidou bem com erros e casos inesperados, que nos assolam no dia-a-dia
- (6) Se você conhece alguns dos frameworks que ajudam a simplificar a nossa vida e deixar nosso código mais bonito
- Extra : Se você conhece testes automatizados e sabe como usá-los, pelo menos no nível de unidade (funcionais contam pontos a mais!)