Screen2 논리 + 구현

이제 Screen2 논리를 살펴보도록 합시다!
댓글을 통해 질문하셔도 괜찮습니다! 환영!!!
동영상도 참고하시고요!

Screen2 논리 세우기

앞에서 해본것과 같이 다시한번 Screen2에서 벌어질 일들을 큰 그림부터 그려봅시다.
아래 순서도와 스마트폰 사진을 비교해 가면서 한번 봐보세요!

논리를 세워 보았는데 아직 애매한 부분이 있죠?? 내 주소 처리는 무엇이며, 상대방 주소 처리는 무엇일까요?
이 애매한 부분을 한번 더 생각해 해봅시다.

#우선 내 주소 처리에는 어떤 단계가 있는지 생각해 봅시다.
1. 우선 상대방도 내 주소를 알아야 하니 WebDB에 올려놔야 합니다.(WebDB, LocationSensor필요)
2. 그리고 내 주소를 Label에 표시하면 되겠죠.

#상대방 주소 처리의 단계도 비슷하겠죠?
1. 상대방 주소를 WebDB에서 가져오고,
2. 상대방 주소를 표시해야겠죠.(순서에 주의하세요)

#마지막으로 다음 페이지에서 길찾기를 하려면
다음페이지(길찾기 페이지)에 내 주소와 상대방 주소를 넘겨줘야 하구요.

논리 쪼개기

자~ 이제 동작 순서를 어느정도 명확하게 해봤으니 각각의 단계를 쪼개봅시다. 쪼개 보면 답이 나온다는!
그런데 쓰고 보니 내 주소, 상대방 주소를 여러번 씁니다. 그리고 다음페이지에서도 쓰고요.
그러니 TinyDB에 저장해 두면 쓸 때마다 가져오기 좋겠죠?(매번 LocationSensor를 작동 시키는 것보다
한번 작동시키고 값을 저장하여 재활용하는 것이 좋겠죠?)

#1. 내 ID 출력
우선 시작할 때 디자인 요소 쫙 정돈하고, 내 ID를 출력해야죠!(아래 Screen2화면을 참고하세요)
내 ID는 이미 Screen1에서 TinyDB에 저장해뒀으니 TinyDB components를 추가하여 불러오면
되겠습니다. 호호 어렵지 않군요.

#2. 알람
그리고 알람기능을 위해 Palette의 User Interface에서 Notifier를 추가하세요.
(알람 기능이 무엇인지 궁금하시다면, Screen2 화면을 다시 한번 확인해 주세요)

#3. 내 주소 처리
WebDB에 내 주소를 저장하기 위해서는 내 현재 위치를 파악 할 수 있는 LocationSensor가 필요하니
추가해 주시고요.
WebDB에 저장해 두고 써야하는 정보는 위치 정보니깐 Value값이 내 주소가 되야하구요, 내 주소의
이름표인 Key값은 내 이름이 되어야 친구가 찾기 쉽겠죠?
(내 이름은 TinyDB에 Tag값으로 myID를 줘서 불러올 수 있죠!)

#4 상대 주소 가져오기
상대 주소 처리하는 방법도 내 주소 처리하는 방법과 비슷합니다. 한번 직접 해보세요.
하지만 주의해야 할 점은 주소를 불러오는 GetValue라는 거죠. GetValue 밑에 이어져 있는 블록은 역할을 하지 않습니다. WebDB에서 값을 받으면, When WebDB.GotValue 블록이 바로 실행되기 때문이죠.

구현하기

음… 여기는 구현이 복잡할 것 같습니다. 클릭 한번에 처리해야 할 일들이 매우 많기 때문이죠.
아 복잡해… 그렇다면 좀 더 쉽게할 수 있는 방법이 없을까요??
예전에…'카멜레온' 앱 만들면서 한 이야기가 있는데…함수를 사용하는 겁니다.
함수의 특징은 반복을 줄이고, 보기가 편하다는 것!
여러분께서 기억을 더듬어 가며 직접 해 보시고, 쉽지는 않을테지만 그 과정에서 분명이 얻어지는 것들이
있습니다. 노력해 보시고요. 아니되면 아래를 참고하세요.

직접 하신분들! 다르다고 해서 틀린게 아닙니다.
프로그래밍은 똑같은 것을 만들어도 만드는 사람마다 굉장히 다르게 표현이 됩니다.
틀린게 절대 아니고요. 정확히 작동한다면! 다 맞은 겁니다요~

그리고 한번 더 봐야할 것은 오른쪽 밑의 when “WebDB”.GotValue 블록입니다.
WebDB에서 데이터를 불러오면! 바로 when “WhebDB”.GotValue 블록이 실행되는걸 잊지마세요.
(이 부분에서 저도, 제 친구도, 그리고 많은 분들이 실수를 하셔서 고생한 경험이 있습니다.)

댓글