Skip to content
Home » 날씨 앱 만들기 | 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(Weather App) 만들기 1 최근 답변 101개

날씨 앱 만들기 | 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(Weather App) 만들기 1 최근 답변 101개

당신은 주제를 찾고 있습니까 “날씨 앱 만들기 – 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(weather app) 만들기 1“? 다음 카테고리의 웹사이트 https://kk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://kk.taphoamini.com/wiki/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 코딩셰프 이(가) 작성한 기사에는 조회수 13,045회 및 좋아요 201개 개의 좋아요가 있습니다.

날씨 앱 만들기 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(weather app) 만들기 1 – 날씨 앱 만들기 주제에 대한 세부정보를 참조하세요

::::::::: 강좌내용 수정 공지(2022년 버전):::::::::
이 강좌는 널 세이프티 이전에 제작된 강좌입니다.
이번 강좌를 따라오다 보면 후반부에 사용자 디바이스 위치정보 사용 퍼미션을 묻는 팝업창이 뜨지 않을 겁니다. 이럴 때는 getLocation 메서드 내에,
\”Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);\”
이 코드 위에 아래의 코드를 추가해 주면 됩니다.
\”LocationPermission permission = await Geolocator.requestPermission();\”
___________________________________________________________________________________________
정말 오랜만에 올리는 강좌입니다.^^;
이번 시간부터는 플러터(flutter) 날씨 앱(weather app)을 만들어 보겠습니다. 이번 강좌를 통해서 stateful widget(위젯)의 생명주기(widget life cycle)와 API의 기본개념, 그리고 현재 내 위치를 파악해서 위도와 경도로 표시해 주는 flutter geolocator라는 패키지도 설치해 보겠습니다.
조금 매운 맛 후반부 강좌로 들어가는 만큼 추후 강좌들은 실전앱을 만드는 형식으로 진행될 예정입니다. 또한 현재 플러터(Flutter) 2.0으로 업그레이드 되면서 deprecated된 스낵바와 raisedButton(elevatedButton) 강좌에 대한 업데이트도 조만간 예정되어 있으니 기대해 주시기 바랍니다.
프로젝트: https://github.com/icodingchef/weather_app
Geolocator package: https://pub.dev/packages/geolocator
이미지 출처: https://www.freepik.com/
Music licence:
Song – Alex Nekita – Child’s play
Follow Artist : https://soundcloud.com/alexnekita​
Music promoted by DayDreamSound : https://youtu.be/EeGxkWNLnuI​

날씨 앱 만들기 주제에 대한 자세한 내용은 여기를 참조하세요.

실시간 시간 및 날씨 위젯 앱 만들기

실시간 시간 및 날씨 위젯 앱 만들기. ConstraintLayout. Volley. JSON. Weather Api. 이제는 위의 네 개념을 이용한 웹 …

+ 여기에 표시

Source: wikidocs.net

Date Published: 1/13/2022

View: 554

날씨 – Google Play 앱

일기 예보 앱 날씨 일별 및 시간별 예보 일기 예보 앱은 정확한 기상 정보가있는 날씨 채널입니다. 일기 예보는 모두에게 큰 도움이됩니다. 날씨 정보를 알고 있다면 …

+ 여기에 보기

Source: play.google.com

Date Published: 12/21/2021

View: 8413

안 드 로이드에 대 한 날씨 & 시계 위젯 (일기예보) – Google Play

최신 기상 관측과 가장 정확한 미래의 일기 예보로 최신 정보를 얻으십시오. 현재 날씨, 시간별 / 일별 예보, 달의 위상, 시간 및 날짜, 캘린더 일정, 다음 알람, …

+ 여기를 클릭

Source: play.google.com

Date Published: 1/23/2021

View: 4747

#190820. 날씨 앱 만들기 (1) – API 불러오기

날씨 앱 만들기 (1) – API 불러오기. Aria (Applied) 2019. 8. 20. 19:57. 그러다가 또 다시 새로운 강의를 발견했어요. https://www.youtube.com/watch?v=awYSrhUZQL0.

+ 여기에 자세히 보기

Source: applied-in-dimigo.tistory.com

Date Published: 11/13/2021

View: 392

[miniProject] 간단한 날씨 어플리케이션 만들기 – 왜이렇게어렵지?

[miniProject] 간단한 날씨 어플리케이션 만들기 … 날씨 API를 이용해서 … 등을 통해서 사용자에게 날씨를 알려주는 간단한 어플을 만들려고 …

+ 자세한 내용은 여기를 클릭하십시오

Source: whyhard.tistory.com

Date Published: 7/30/2022

View: 4424

디자이너, 날씨앱 개발하기 – 브런치

저는 만드는 것을 좋아합니다. 나무, 가죽, 종이, 회로기판, 자석, 3D 프린팅, html, js, nodejs.. 어떤 재료나 방식이든 상관없이, 각각의 전문가는 …

+ 여기에 보기

Source: brunch.co.kr

Date Published: 12/28/2022

View: 3877

날씨 APP 만들기 (OpenWeather API 활용) – joooing

HTML, CSS, Javascript와 OpenWeather API 이용해 날씨 APP을 만들어 보았다. 앱에 대해 먼저 소개를 해보자면, 사용자가 검색창에 도시명을 입력하면 …

+ 여기에 더 보기

Source: joooing.tistory.com

Date Published: 9/16/2021

View: 9250

[React Native #5] 리액트 네이티브 날씨앱 만들기 #4 – Steemit

리액트 네이티브로 날씨앱 만들기 네번째 강좌 리액트 네이티브를 사용하여 날씨앱을 만드는 네번째 강좌입니다. 이번에는 s 를 이용하여 화면을 이쁘게 디자인 …

+ 여기를 클릭

Source: steemit.com

Date Published: 12/29/2021

View: 6215

주제와 관련된 이미지 날씨 앱 만들기

주제와 관련된 더 많은 사진을 참조하십시오 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(weather app) 만들기 1. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

플러터(Flutter)  조금 매운맛🌶️ 강좌 13 | 날씨 앱(weather app) 만들기 1
플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(weather app) 만들기 1

주제에 대한 기사 평가 날씨 앱 만들기

  • Author: 코딩셰프
  • Views: 조회수 13,045회
  • Likes: 좋아요 201개
  • Date Published: 2021. 1. 28.
  • Video Url link: https://www.youtube.com/watch?v=YqKMBQYZSmw

Google Play 앱

일기 예보 앱 날씨 일별 및 시간별 예보

일기 예보 앱은 정확한 기상 정보가있는 날씨 채널입니다.

일기 예보는 모두에게 큰 도움이됩니다. 날씨 정보를 알고 있다면 계획을 신중하게 준비 할 수 있으며 직장에서 성공하고 삶을 개선 할 수 있습니다.

날씨 예보 앱을 다운로드하십시오. 오늘 날씨가 매시간 업데이트된다는 것을 알 수 있습니다. 일기 예보 앱은 내일 날씨 일기 예보, 오늘 날씨 일기 예보, 10 일 일기 예보

일기 예보 앱은 날씨 채널로 많은 지역의 날씨를 관리 할 수 ​​있습니다. 홈 스크린에서 사용자는 자신의 위치의 날씨를 볼 수 있습니다. 그런 다음 사용자는 위치 관리를 위해 다른 화면으로 이동할 수 있습니다. 사용자는 런던 날씨, 파리 날씨, 샌프란시스코 날씨, 휴스턴 날씨를 추가 할 수 있습니다.

날씨 앱은 현재 위치의 일기 예보를 자동으로 감지합니다. 날씨 기류에는 기압, 기상 조건, 시야 거리, 상대 습도, 서로 다른 단위의 강수량, 이슬점, 풍속 및 방향, 10 일 미래 예보 및 시간별 일기 예보가 포함됩니다.

실시간 온도, 습도, 압력, 풍력 및 풍향은 모두이 날씨 앱에 기반합니다.

날씨 앱에는 많은 기능이 있습니다.

– 무료. 그것은 무료 날씨 채널, 날씨 네트워크입니다.

– 글로벌. 예를 들어 런던 날씨, 파리 날씨, 샌프란시스코 날씨, 휴스턴 날씨 등 원하는 장소의 날씨를 볼 수 있습니다.

– 전체 보고서. 날씨의 모든 정보를 표시합니다 : 위치 시간, 온도, 기압, 기상 조건, 가시 거리, 상대 습도, 다른 단위의 강수량, 이슬점, 풍속 및 방향

– 무료 일기 예보 :이 날씨 및 기후 앱은 일일 날씨, 시간별 일기 예보 및 월간 일기 예보를 제공합니다. 그 사이에, 그것은 또한 각 주 간 여행 일기 예보를 제공하고 기상 조건 및 바람을 예측한다.

– 오늘, 내일, 3 일 후, 7 일 후. 오늘 날씨, 내일 날씨, 매시간의 시간별 날씨.

– 네트워크 또는 GPS로 위치를 감지합니다.

– 여러 위치의 일기 예보 관리

– 날씨 알림이 있습니다. 마음에 들지 않으면이 기능을 끌 수 있습니다.

– 일기 예보는 매우 정확하고 신뢰할 수 있습니다.

이것은 날씨 및 일기 예보 응용 프로그램의 두 번째 버전입니다. 우리는이 일일 예보 앱을 더 좋고 더 좋게 만들기 위해 최선을 다할 것입니다.

일기 예보 앱을 다운로드하고 날씨 채널로 사용하여 시간별 및 일별 기상 정보를 얻으십시오.

업데이트 날짜 2022. 10. 9.

안 드 로이드에 대 한 날씨 & 시계 위젯 (일기예보)

최신 기상 관측과 가장 정확한 미래의 일기 예보로 최신 정보를 얻으십시오.

현재 날씨, 시간별 / 일별 예보, 달의 위상, 시간 및 날짜, 캘린더 일정, 다음 알람, 배터리 수준을 보여주는 가장 우아하고 사용자 정의 할 수있는 위젯으로 휴대 전화 / 태블릿을 맞춤 설정하십시오.

그래프 차트를 포함한 우아한 툴을 사용하여 가장 정확한 시간별, 5 일간 및 10 일간의 예측을 통해 하루의 결정을 내릴 수 있습니다.

풍모:

– 자동 위치 감지

– 네트워크 및 GPS (Global Positioning System)로 찾기.

– 이름 또는 우편 번호로 위치를 수동으로 검색하십시오.

– 날씨 알림 경고.

– 여러 날씨 제공 업체.

– 현재 기상 상태.

– 시간별 일기 예보.

– 10 일간 일기 예보.

– 레이더 서비스.

– 온도.

– 섭씨와 화씨 온도 단위.

– 상대 습도 비율.

– 대기압.

– 시정 거리.

– 강수량.

– 자외선 지수.

– 이슬점.

– 다른 단위로 풍속 및 방향.

– 일출과 일몰 시간.

– 상태 표시 줄 (알림 표시 줄)에 온도를 표시하십시오.

– 친구들과 날씨 및 위치 정보 공유.

– 우아한 홈 화면 위젯.

– 다음 알람 및 현재 배터리 수준이 표시됩니다.

– 캘린더 일정

– 시계 및 날짜 글꼴을 사용자 정의하십시오.

– 달의 위상.

– WiFi에서만 업데이트하고 로밍 중에는 중지하십시오.

– 자동 업데이트 간격 : 15, 30 분, 1, 3, 6, 9, 12 시간 또는 수동 업데이트.

– 여러 지역의 날씨 및 예측을 따르십시오.

– 테마.

– 풍부하고 단순한 아이콘

– 차트 그래프.

업데이트 날짜 2022. 4. 2.

#190820. 날씨 앱 만들기 (1)

그러다가 또 다시 새로운 강의를 발견했어요.

오늘의 날씨! 그게 바로 제가 만들어 갈 자그만한 프로젝트가 되지 않을까 싶습니다.

일단 프로젝트부터 만들어야하겠죠?

build.gradle에서 사용할 implementation 정의로 시작합니다.

자! OpenWeather이라는 API를 사용할 거예요.

날씨를 얻어오는 건 이 녀석에게 맡겨줄 겁니다.

회원가입하고 API 키 생성 이 아이디를 넣어줘서 접근하도록 할거예요 Retrofit을 만들어주는 과정입니다. 사이트에서 받은 관련된 정보입니다. 인터페이스 하나 만들어주고 오늘은 여기서 끝!

[miniProject] 간단한 날씨 어플리케이션 만들기

안녕하세요

오늘은 간단하게 날씨를 알려주는 어플리케이션을 만들어 보았습니다.

날씨 API를 이용해서

현재 온도

현재 위치

날씨정보

날씨 아이콘

등을 통해서 사용자에게 날씨를 알려주는 간단한 어플을 만들려고 했습니다.

다음으로 코드작성을 해보겠습니다.

1. HTML 파일

now weather?

지금 날씨는

2. CSS 파일

* { padding: 0; margin: 0; } body { background: linear-gradient(45deg, #4fc3f7, #0093c4 ); } .container { width: 100%; height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; } .container * { margin: 10px; color: #fce4ec; } .container h1 { font-size: 3em; } .weatherInfo { font-size: 1.5em; }

여기서 포인트는

첫번째로 linear-gradient를 사용해서 그라데이션을 할 수 있다는 것입니다.

두번째로 height: 100vh로 설정하고 flex를 이용해서 container클래스의 div태그를 정중앙으로 옮길 수 있었습니다.

추가적으로 Color Tool 이라는 사이트를 사용하니 정말 간단하게 마음에 드는 색상을 고를 수 있었습니다.

https://material.io/resources/color/#!/?view.left=0&view.right=0

3. Javascript 파일

const API_KEY = “#”; //add your API KEY const COORDS = ‘coords’; //좌표를 받을 변수 //DOM객체들 const weatherInfo = document.querySelector(‘.weatherInfo’); const weatherIconImg = document.querySelector(‘.weatherIcon’); //초기화 function init() { askForCoords(); } //좌표를 물어보는 함수 function askForCoords() { navigator.geolocation.getCurrentPosition(handleSuccess, handleError); } //좌표를 얻는데 성공했을 때 쓰이는 함수 function handleSuccess(position) { const latitude = position.coords.latitude; const longitude = position.coords.longitude; const coordsObj = { latitude, longitude }; getWeather(latitude, longitude); //얻은 좌표값을 바탕으로 날씨정보를 불러온다. } //좌표를 얻는데 실패했을 때 쓰이는 함수 function handleError() { console.log(“can’t not access to location”); } //날씨 api를 통해 날씨에 관련된 정보들을 받아온다. function getWeather(lat, lon) { fetch(`https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${lon}&appid=${API_KEY}&units=metric&lang=kr`).then(function(response) { return response.json(); }) .then(function(json) { //온도, 위치, 날씨묘사, 날씨아이콘을 받는다. const temperature = json.main.temp; const place = json.name; const weatherDescription = json.weather[0].description; const weatherIcon = json.weather[0].icon; const weatherIconAdrs = `http://openweathermap.org/img/wn/${weatherIcon}@2x.png`; //받아온 정보들을 표현한다. weatherInfo.innerText = `${temperature} °C / @${place} / ${weatherDescription}`; weatherIconImg.setAttribute(‘src’, weatherIconAdrs); }) .catch((error) => console.log(“error:”, error)); } init();

API KEY 얻는 방법

1. https://openweathermap.org/ 해당 날씨 api사이트에서 회원가입을 합니다.

2. 그리고 화면 상단에서 My API Keys로 가서 API KEY를 얻을 수 있습니다.

완성한 모습

깔끔하게 날씨가 뜨는 것을 알 수 있습니다.

몰랐던 점 & 해결법 css – flex로 div태그 정중앙에 배치하기

api 사용하기 – JS fetch함수 – https://www.daleseo.com/js-window-fetch/

날씨 api 사용법 – https://openweathermap.org/current#data 섭씨,화씨 언어 아이콘 사용법 – https://openweathermap.org/weather-conditions

컬러는 어디서? https://material.io/resources/color/#!/?view.left=0&view.right=0 해당 사이트에서 컬러를 고를 수 있다.

현재 위치 가져오는 법 – navigator – https://csdrive.tistory.com/17

참고한 사이트

디자이너, 날씨앱 개발하기

저는 만드는 것을 좋아합니다. 나무, 가죽, 종이, 회로기판, 자석, 3D 프린팅, html, js, nodejs.. 어떤 재료나 방식이든 상관없이, 각각의 전문가는 아니지만 뭔가 만드는 것을 좋아합니다. 특히 쓸모가 있는 물건이나 작동하는 것들이요.

예전부터 모바일 앱을 만들어보고 싶었습니다. 개발에 대한 지식이 거의 없지만 인터넷을 검색해가며 js, node 등을 조금씩 익히며 원하는 웹페이지나 챗봇 같은 것을 만들 수 있었습니다. 하지만 모바일 앱은 그 벽이 너무 높았습니다. iOS앱을 개발할 수 있는 언어인 Objective-C나 Swift로 기본적인 앱 만드는 예제를 보며 시도해봐도 구조가 잘 이해되지도 않고, 개발툴인 Xcode 사용법도 잘 모르겠더라고요.

그런데 React Native를 알게 되었습니다. 그리고 노마드코더의 ‘날씨앱 만들기’ 영상을 보며 내 휴대폰에서 실제로 동작하는 앱을 만들 수 있었습니다. 앱 개발을 배워보고 싶은데 엄두가 나지 않는 디자이너라면 React Native를 한번 시도해보시는 것도 좋을 겁니다. 뭐가 어쨌든, 눈에 보이는 텍스트들의 생김새가 html, js와 비슷합니다. 개발을 위한 복잡한 툴이나 과정도 거의 필요 없습니다. 그냥 코드 에디터로 작성하고, 터미널에서 실행하면 됩니다. 그리고 React Native를 사용한 개발-배포를 너무나도 쉽게 만들어주는 Expo라는 toolchain이 있는데, 이것을 사용하면 개발도 더 손쉽게 할 수 있고(다양한 기본 라이브러리들), 개발 외의 복잡한 여러 환경과 준비사항들(앱 정보, 스토어에 등록하기 위한 준비, 증명서 등등)을 알아서 처리해줍니다.

그 후 제가 디자인한 날씨앱을 React Native로 직접 개발해서, 앱스토어와 구글플레이에 올리게 되었습니다. 물론, 제가 원하는 기능을 개발하기 위해서 구글링도 많이 하고 오랫동안 시간을 들여야 해서 개발을 완료하는 데는 시간이 오래 걸렸습니다 :O

지난 12월, 우붓에서 머물면서 기존에 만들었던 날씨앱의 디자인과 개발을 새로 했습니다. 작은 동네에서 3주 동안 할 게 없으니 집중이 잘 되었죠.

처음 앱을 만들 때는 개발을 하는데 머리를 다 쓰다 보니 디자인은 그냥 프로토타입처럼만 하고, 개발이 힘든 건 대충하고 했는데, 이번엔 제가 어디까지 가능하고 불가능한지 대충 파악을 했으니 리디자인을 하는 것에 집중을 했습니다. 물론… 새로운 기능들도 넣으려고 해서 개발을 하는 것이 머리가 아프기는 했지만요.

그래서 완성한 앱의 모습

아래와 같은 기능, 정보를 제공합니다.

현재의 온도와 대기질 수치

어제와 오늘, 내일의 날씨 비교

미세먼지, 초미세먼지 수치, 체감온도, 풍속, 해가 뜨고 지는 시간

한 주간의 일기예보

어제와 오늘, 내일의 날씨 비교는 pxd 무이 님의 글과 디자인을 많이 참고했습니다. 무이님은 참 대단한 분입니다!

그리고 대기질 상태에 따라 배경색이 바뀌는 것은 미세먼지정보 앱으로 유명한 ‘미세미세’를 참고했습니다. 그 전에도 대기질정보제공 서비스에 이런 디자인이 있었는지는 모르겠지만, 즉각적으로 상태를 확인하는데 딱 좋았습니다.

주요 기능들에 대한 디자인은 이렇게 기존에 있었던 것들을 잘 엮으려고 했고, 전체적인 그래픽디자인은 (제가 정리할 수 있는 능력 안에서)정보를 정확히 확인할 수 있는 정도로만 하려고 했습니다. 그래픽 디자인을 전공하지 않아서 한계가 있고, UI가 복잡해지면 개발하기도 어렵기 때문입니다. 처음엔 터미널 같은 화면에 정말 텍스트만으로 구성된 형태로 할까 생각했다가, 그러면 강약도 없고 정보가 제대로 전달되지 않으리라 생각되어 바꾸게 되었습니다.

진행했던 프로세스

맨 처음 개발을 배우기 시작할 때부터 지금까지 진행했던 전체적인 프로세스를 정리하면 아래와 같습니다. 모바일앱을 서비스하는 스타트업의 프로세스와 비슷합니다. 1,2번은 빼고요.

1. 개발의 기본적인 것 익히기

뭐든 예제를 보고 따라 해서 성공해보기

2. 만들고 싶은 앱 정하기

날씨, 미세먼지 앱을 만들어보자!

3. 기본 기능이 되는지 개발 테스트해보기

대기질 정보 API를 제공하는 곳이 있을까? 그 데이터를 받아와 화면에 표시할 수 있을까?

4. 디자인하기

5. 디자인한 것 중, 개발해보지 않은 것들이 가능할지 알아보기

내가 Pagination을 할 수 있을까? 세팅페이지에서 값을 바꾸고 저장하고 메인페이지에 돌아오면 그 세팅 값이 반영되게 할 수 있을까?

6. 디자인 수정하기

개발 가능한 만큼으로 디자인 수정하기

7 개발하기

작은 단위 하나하나 개발해서 확인한 것들을 하나로 묶는다. 이것도 매우 난관이다

8. Google Analytics 넣기

일단 언제 쓰게 될지 모르더라도 빠짐없이 다 로그를 남기도록 하자. 이제 Firebase가 더 좋을 텐데, Expo 개발환경에서 넣기는 어렵다

9 . 테스트하기

시뮬레이터로 해보고, 실제 폰에서 돌려보고 동작을 확인한다

10. 스토어에 올리기

스토어에 올리고, 그 버전을 테스트해본다. 제대로 동작하면 Release 한다

11. 마케팅

가만히 있으면 유저들에게 노출조차 되지 않는다. 내 앱을 알릴 수 있는 행동을 해야 한다

12. 수치 관찰

앱스토어, 구글플레이의 통계들을 확인하고, Google Analytics의 통계를 확인해보며 관리한다. 중국, 미국에는 알린 적이 없는데 다운로드가 일어나고 있다. 다음엔 중국인들을 대상으로 마케팅 해야지!

13. 유저들의 피드백 반영

스토어 리뷰나 커뮤니티의 댓글들을 보며 피드백을 반영한다. 체감온도와 풍속을 추가해달라던가, 수치가 잘못된 것 같다는 피드백 등등..

배운 점

디자인에 빠진 케이스들이 많다

디자인한 것을 실제로 구현할 때에는 생각보다 반영해야 할 케이스들이 많았습니다. 스타트업에서 이미 경험했던 것들도 가끔 까먹게 됩니다. 그러니 당연히 테스트케이스 작성과 QA과정이 필요한거겠죠. 그리고 거기서 배운 것들을 다음에 디자인할 때는 더 잘 처리해야 합니다…고 다짐합니다.

0~23시간 그래프에 현재 시각 위치 위에 수치를 표시하고 싶다. 그러면 0일 때와 23일 때에는 어느 위치에 가게 해야 하는가? 그냥 위에 표시하면, 그래프 영역을 벗어날 수 있다

0~23시간 그래프에 날씨 아이콘을 표시하고 싶다. 날씨가 전 시각과 다를 때에만. 그런데 0~23시간 그래프는 좁고, 날씨 아이콘 하나는 2시간 이상의 영역을 차지한다. 전 시각과 현재 시각의 날씨가 다르면, 아이콘을 겹치게 표현해야 할까? 아니라면, 어떤 아이콘을 표시해야 할까?

구현을 할 때는 생각대로 할 수 없다

개발의 한계도 아니고, 외적인 한계들이 있는 경우들도 있습니다. 그런데 저와 같은 디자이너들은 역할 상 그것을 파악하기 힘든 경우들이 있습니다. 그렇다고 그런 것들을 개발자나 다른 누군가 당연히 해줘야 하는 것이라고 생각해서는 안되기는 합니다. 함께 잘 파악하고, 의사소통 해야겠죠. 물론 그것들을 더 잘 파악할 수 있는 건 실제로 붙이고 만들어야하는 개발자이기는 합니다. 친절한 개발자라면 그런 한계 상황들을 잘 설명해주겠죠.

앱이 Foreground에 있는 동안, 10초에 한 번씩 자동으로 현재 온도와 대기질 정보를 업데이트하고 싶다. 하지만 날씨정보 API를 한번 호출할 때마다 돈이 든다. 그렇게 할 수 없다

주소를 표시할 때 ‘역삼역 > 역삼동, 강남구, 서울특별시’ 이렇게 (한국사람들이 익히 알고 있는) 정확한 레벨들을 표시 하고 싶다. 하지만 나라와 지역에 따라 제공하는 주소 레벨들의 정의가 다르다. 어쩔 수 없이 대략의 케이스들을 나누어 비슷하게 표시하고, 그 외 상황(else)을 만들어 대처해야 한다. 물론 더 좋은 유료 API를 사용하면 그런 문제도 자동으로 해결되겠지만….

개발을 하는 것은 어렵다

그냥, 생각보다 어렵습니다. ㅠㅠ

그리고 뿌듯합니다. 물론 엉망진창인 코드겠지만, 제가 아는 범위 내에서 구조가 잘 정리되어 있고, 잘 연결된 모습을 보면 잘 디자인된 스케치, 흐름을 보고 있는 것 같습니다.

더 나은 UI를 위한 개발은 미루게 된다 (배운점인가?)

사실 지금도 MVP 정도에 가깝습니다. 개선하고 싶은 것들이 군데군데 있지만, 머리를 좀 식히고 유저들의 반응을 보고 개선을 하려고 합니다…하고 자기합리화를 하며 뒤로 미루고 있습니다. 가장 개선하고 싶은 것은 로딩 및 인터랙션 간의 UI Animation인데, 아직 손을 대지 못하고 있습니다. 한 번도 개발해보지 않은 것이라 시간을 들여 공부를 해야 하기도 하고요. 데이터를 받아와 표시하고, 구조들끼리 연결되고 기능이 제대로 동작하는 것은 뿌듯한데, UI를 위한(유저들을 위한) 기능들은 미루게 됩니다. 개발자들도 어느 정도는 이런 비슷한 마음이 있지 않을까요. 특히 시간에 쫓기거나 지친 상황이라면요. 스타트업에 3년 넘게 있으면서 개발자들에게 많이 동화되었지만, 앱을 실제로 개발할 때 제는 디자이너가 아니라 딱딱한 개발자처럼 생각하게 되었습니다. 물론, 제가 있던 스타트업 개발자들은 이런 ‘더 나은 UI를 위한’ 것들을 잘 개발해주었습니다. 특히 데이터 근거와 ‘유저들에게 더 낫겠다’고 수긍할 수 있는 디자인이라면 더욱더.

…한번의 과정을 끝내고 나니 제가 괜한 핑계거리를 찾으려고 한 것 같습니다. 개발자분들 죄송합니다 (–)(__)

이야기 정리

코드도 개발자가 보면 분명 엉망진창일 것이고, 디자인이 완벽한 것도 아니긴 하지만, 어쨌든 끝까지 만들었습니다. 뭐든 만드는 일은 그럴 것이라 생각합니다. 당연히 전문가에게 맡겨야 할 것들도 있겠지만, 전문가만큼 만들지 못한다고 해서 해보지 못할 것들은 없다고 생각합니다. 가죽으로 배터리 케이스를 만든다던가, 나무로 모니터 받침대를 만든다던가, 내가 디자인한 MP3 플레이어를 만든다던가, 슬랙봇을 만들던가… 잘못하면 위험하거나 남에게 해를 끼치는 것들이 아니라면 직접 만들어 볼 수 있습니다! 그러다 관심이 생기면 더 깊게 공부하고요.

하지만 처음에 이야기했던 것처럼, 모바일앱을 만드는 것은 장벽이 너무 높습니다. 그래도 React Native + Expo로 간단한 앱을 만드는 것을 해본다면, 지난번 슬랙봇 만들기처럼 ‘초반의 성공에 대한 기쁨’을 맛볼 수 있을 겁니다. 그리고 이것저것 해보다 보면 뿌듯함도 느껴지고, 아주아주아주 작은 부분이지만 개발에 대한 이해도 조금 할 수 있을 겁니다.

하지만 역시나, 다운로드 수는 제 마음 같지 않습니다. 무수한 초기 스타트업들의 가장 중요한 고민이겠죠. 서비스의 컨셉과 디자인과 개발이 아주 멋지고 잘 되었더라도, 좋은 제품이더라도, 유저들에게 보여지지 않으면 의미가 없습니다. 적당한 가격에 기능성도 있고 아주 잘 만들어진 스툴이라도, 고객들에게 알려지지 않으면 의미 없는 제품이 되죠. 대신 유명 디자이너가 디자인한, 일반적인 스툴과 별다를 게 없는 스툴은 여기저기 화제가 되고요. 이케아같이 널리 알려진 매장에서 파는 스툴은 그냥 많이 팔리고요. 역시, 요즘 시대는 마케팅과 플랫폼이 중요합니다. 현혹하기 위해서가 아니라, 어떻게든 알리는 것이 필수니까요. 그래서 당분간은 앱 개선은 중단하고(자기합리화) 앱을 알리기 위한, 다운로드를 늘리기 위한 시도들을 해보기로 했습니다. 이럴 때 Google Analytics와 애플, 구글에서 제공하는 Store들의 Statistics들이 필요하죠!

다음에 좋은 운영 지표들이 생겨서, 그것에 대한 글을 쓸 수 있기를 기대하며 글을 마칩니다.

아, 앱은 아래의 링크로 다운받을 수 있습니다 😀

iOS 앱스토어 링크

Android 구글플레이 링크

날씨 APP 만들기 (OpenWeather API 활용)

반응형

HTML, CSS, Javascript와 OpenWeather API 이용해 날씨 APP을 만들어 보았다. 앱에 대해 먼저 소개를 해보자면, 사용자가 검색창에 도시명을 입력하면 해당 도시의 온도, 습도, 풍속 등의 날씨 정보와 현재날짜를 아이콘, 사진과 함께 알려주는 앱 이다.

OpenWeather API는 날씨와 관련된 정보를 제공하는 API인데, fetch를 이용해 서버 요청을 하는 방식으로 데이터를 받아와 활용했다. 이번에도 HTML & CSS의 디자인적인 부분과 Javascript 부분으로 나누어 새로 알게 되었거나 중요한 부분들에 대해서만 간략히 소개해보려고 한다.

최종 완성본

와이어프레임

1. HTML & CSS

✔️ input placeholder 색상 변경

검색창 부분을 input 태그로 만들어줬는데, placeholder로 ‘search’라는 문자열을 설정해 기본적인 텍스트로 뜨게 만들었다. 그런데 원래 색상이 어두워보여서 CSS에서 ::placeholder 선택자를 이용해 placeholder에 들어가는 텍스트 색상도 따로 지정해줬다.

#search::placeholder { color : #eee; }

✔️ 검색 아이콘에 transition 적용

이 부분도 정말 자세히 봐야 보이지만 검색 아이콘에 마우스를 대면 아이콘이 조금 커지도록 효과를 적용해봤다. 먼저 transition 이라는 속성에 서서히 변화하길 원하는 속성이름과 변화가 진행될 시간을 값으로 지정해주고, 마우스를 올렸을 때를 의미하는 :hover 부분에 변화 후의 속성을 값으로 지정해주면 된다.

#search-icon { transition: font-size 0.3s; } #search-icon:hover { font-size: 17px; }

✔️ 자간 설정

폰트 크기가 커질수록 글자 사이 간격도 넓어지는 것 같아 자간을 줄이는 설정을 추가해줬다. letter-spacing 속성 값을 음수로 설정해주면 간단히 해결할 수 있다!

#temp { font-size: 80px; letter-spacing: -7px; }

✔️ datalist

사실 이 기능은 앱을 만들면서 계속 여러 도시 이름들을 번갈아 입력하며 날씨에 따라 사진이나 아이콘이 다르게 뜨는지 확인하는 과정이 귀찮아서.. 그냥 마우스로 선택하는 기능은 없나? 하고 찾아보다 알게되었다. HTML에서 해당 input태그에 list=”list명” 속성을 추가 해주고, 그 다음에 datalist태그를 만들고 id를 방금 전에 만든 input태그의 list명으로 설정 해주면 된다. 그리고 datalist태그 안에 저장해두고자 하는 옵션들을 option태그로 쭉 작성 해주면 된다. 아래 코드와 사진을 보면 쉽게 이해할 수 있을 것이다.

2. Javascript

✔️ fetch 함수로 날씨 데이터 받아오기

openweathermap.org 사이트에 접속해 회원가입을 하면 url과 API key를 발급해준다. 이 두가지를 이용하면 아래처럼 날씨 데이터에 접근할 수 있다. 중간에 ?q= 부분에는 도시명을 값으로 넣어주면 해당 도시의 날씨 정보를 얻어올 수 있다. ?id= 를 이용하면 도시의 id를 통해 정보를 얻어올 수도 있다. 이번에는 도시명 검색을 통해 데이터를 얻어오는 앱을 만드려고 했기 때문에 ?q= 형식을 사용했다.

브라우저에 API키를 포함한 URL을 입력한 모습

그리고 서버로 요청(request)을 보내고 응답(response)을 받을 수 있게 도와주는 메서드인 fetch() 를 사용해 데이터를 요청하고 받아왔다. fetch는 Promise를 반환하는데 콘솔창에 입력해보면 알겠지만(아래사진 참고), 이 상태로는 바로 데이터를 사용할 수가 없다. 이 중 Response를 꺼내고, 서버에서 주는 json데이터를 쓸 수 있게 해주는 json() 메서드를 이용해 사용 가능한 데이터 형태로 만들어준다. 여기서 then()은 통신에 성공하는 경우에 콜백함수를 실행시켜주는 역할을 한다. 이렇게 getData() 함수를 통해 데이터를 서버로 부터 받아오고, 받아온 데이터를 renderWeatherData()라는 함수에 넘겨줌으로써 날씨 데이터를 활용할 수 있었다.

(왼) Promise의 모습 -> (오) json()을 적용한 모습

let API_URL_OpenWeatherMap = `http://api.openweathermap.org/data/2.5/weather?q=seoul&appid=${API_KEY}`; function getData() { fetch(API_URL_OpenWeatherMap) // Promise반환 -> res로 전달 .then(function(res) { return res.json() // json() 메서드 적용 -> json으로 전달 }) .then(function(json) { renderWeatherData(json); // json형태의 데이터를 다른함수로 넘겨줌 }); } function renderWeatherData(data) { let now = new Date(); date.textContent = `${moment(now).format(`dddd, Do MM YYYY`)}`; temp.textContent = `${Math.round(Number(data.main.temp) – 273.15)}°C`; // …생략 changeIcon(data); }

✔️ 날씨에 따라 아이콘, 배경 변경하기

먼저 CSS에 날씨별로 class를 만들고 각각에 다른 배경이미지를 지정해두었다. 배경 이미지는 unsplash라는 사이트에서 url을 통해 가져왔고, 아이콘은 font awesome이라는 사이트에서 가져오는 방식을 사용했다. (이 부분은 지난번 글에 소개해두었다)

아이콘이나 이미지 둘 다 특정한 클래스를 지정하기만 하면 리소스를 가져올 수 있기 때문에, 아래처럼 classList.remove와 classList.add만을 사용해 조건에 따라 추가/삭제하는 함수(changeIcon)를 작성했다. 조건문은 가져온 날씨 데이터 중 ‘Clear’, ‘Clouds’, ‘Snow’… 등 날씨에 대한 간략한 설명을 value로 가지는 key가 있어서 이 부분을 이용해 작성했다.

추가로, 처음에는 classList.add로 클래스를 계속 추가해주는 식으로만 코드를 작성했었는데, 여러번 검색을 하면 한 태그에만 몇개의 클래스가 추가되어버리는 문제가 있었다. 그래서 이전까지의 모든 클래스를 지우려고 spread operator(…)와 함께 classList.remove를 사용했다.

(왼) CSS, (오) Javascript

✔️ 현재 날짜 표시

트위틀러 때도 사용했던 moment.js 라이브러리를 이용해 현재 시간을 표시했다. 아래와 같이 HTML에서 import를하고, Javascript에서 Date()로 현재시간을 가져오도록 한 후 moment js의 format() 메서드를 사용해 형식을 지정해주었다. moment.js 홈페이지에 다양한 형식들이 있어서 필요에 따라 참고하면 좋을 것 같다.

let now = new Date(); date.textContent = `${moment(now).format(`dddd, Do MM YYYY`)}`

✔️ 키보드로 입력받기

이 부분도 전에 계산기를 만들 때 알게 되었던 addEventListener의 ‘keydown’이벤트를 활용해 구현했다. keyCode 중 13은 엔터를 의미하고(각 키의 keyCode는 여기서 확인 가능하다), 입력창 중 input태그(여기서는 search라고 지정)에 엔터를 누르는 이벤트가 발생했을 때 데이터를 받아오고, 출력하는 함수들을 실행시키도록 했다.

search.addEventListener(‘keydown’, function(e){ if(e.keyCode === 13) { // 함수실행 } }

다른 부분들은 트위틀러나 회원가입 페이지를 만들 때 썼던 방식을 조금씩 응용해서 구현할 수 있었는데, 서버로부터 데이터를 받아와 활용하는 건 처음이라 재밌기도 하고 새로운 개념들도 많이 접하게 된 것 같다. API를 활용할 줄 알게 됨으로써 내가 할 수 있는 일의 범위도 훨씬 넓어진 듯한 느낌도 든다 😀 새로 알게된 fetch, Promise나 서버와 클라이언트, JSON에 대해서는 좀 더 확실히 이해하도록 더 알아봐야겠다.

반응형

키워드에 대한 정보 날씨 앱 만들기

다음은 Bing에서 날씨 앱 만들기 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(weather app) 만들기 1

  • 플러터
  • flutter
  • 코딩
  • 코딩강좌
  • 플러터강좌
  • 초보자
  • 코딩학습
  • 퓨시아
  • fuchsia
  • 구글
  • 안드로이드
  • 크롬
  • 날씨앱
  • weather app
  • api
  • geolocator
  • widget life cycle
  • 위젯생명주기
  • 생명주기
  • 코딩셰프
  • 코딩쉐프
  • permission
  • manifest
  • xml
  • ios
  • info.plist

플러터(Flutter) # #조금 #매운맛🌶️ #강좌 #13 #| #날씨 #앱(weather #app) #만들기 #1


YouTube에서 날씨 앱 만들기 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(weather app) 만들기 1 | 날씨 앱 만들기, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  나 보다 Grammar | Topik 2 A-은가보다 / V-나보다 23795 좋은 평가 이 답변

Leave a Reply

Your email address will not be published. Required fields are marked *