문자, 전화 그리고 함수

이제 연락을 취할 번호 설정은 할 수 있게 되었어요!
근데 번호 설정만 해놓으면 무얼하나. 연락이 가야지!!
이제 연락을 할 수 있게 함께 만들어 봅시다!

연락을 위한 Blocks 설정

전화 거는 것을 생각해 봅시다.
전화번호를 누르고 통화 버튼을 누르죠? 우리가 할 것도 똑같습니다.
스마트폰한테 전화번호 알려주고 전화 걸라고 하면 됩니다.
문자는 문자 내용도 알려줘야겠죠?
그럼 언제 전화랑 문자 보내나요?
카운트다운이 0이 되면 전화 문자를 보내야죠.
그래서 카운트 다운 블록의 if문에 else를 먼저 만들어야 겠어요.(카운트 다운이 0인지 확인해야 하니깐요)
어라? If-else가 기억 안 나신다고요?? ㅜㅜ 이미 ‘뭐먹’에서 배웠어요. 다시 찾아보세요.

[EmergencyPhoneCall] -> [set EmergencyPhoneCall. PhoneNumber. to] 블록을 먼저 else 공간에 배치합니다.
이 블록은 상대방 전화번호를 입력받는 역할을 합니다.
그 다음 [call PhoneNumberTinyDB1] -> [call PhoneNumberTinyDB1. GetValue Tag. ValueIfTagNotThere]블록을
사용하여 저장해 두었던 전화번호를 불러옵니다.
Tag에는 [Text] -> [“ ”] 를 연결한 후 PhoneNumber를 입력하여 전화번호 저장 위치를 알려줘야겠죠!
이렇게 전화를 걸 준비를 마쳤으면 [EmergencyPhoneCall] -> [call EmergencyPhoneCall. MakePhoneCall]블록을
연결하여 전화를 겁니다.

문자를 보내는 것도 전화를 거는 기능과 비슷하게 이루어집니다.
[EmergencyTexting] -> [set EmergencyTexting. PhoneNumber. to] 블록을 먼저 화면에 배치합니다.
그 다음, [call PhoneNumberTinyDB1] -> [call PhoneNumberTinyDB1. GetValue Tag. ValueIfTagNotThere]블록을 [set EmergencyPhoneCall. PhoneNumber. to] 블록 오른쪽에 연결시킨 후,
tag 오른쪽에는 [Text] -> [“ ”] 를 연결시키고 “ ”에 PhoneNumber를 입력합니다.

전화기능과 다르게 하나 더 설정해 줘야 하는 것이 있는데요~ 뭘까요?
바로 문자 내용입니다. 아무 내용도 없으면 잘못 보낸 줄 알고 날 구하러 오지 않을 수도 있잖아요!!
먼저 [EmergencyTexting] -> [EmergencyTexting. Message]를 위에 만들어 놓은 블록 아래에 연결 시켜주세요.
메시지 내용과 위치를 [Text] -> [join]블록을 사용하여 하나의 메시지에 담습니다.
[join]블록 오른쪽에 위칸에는 [Text] -> [“ ”]를 연결시킨 후 "위급상황이야 나 좀 도와줘."라고 입력하고 아래칸에는 [MyLocationSensor] -> [MyLocationSensor. CurrentAddress]를 연결시켜줍니다.
마지막으로 [EmergencyTexting] -> [call EmergencyTexting. SendMessage]블록을 연결해 문자를 전송할 수 있게 합니다.

아으~ 여러분 아직 할만 하시죠? 좀 복잡해 졌습니다.ㅜㅜ
만약에, 또 전화나 문자 걸기 부분이 필요하면… 음영으로 된 부분을 또 만들어야 하고. 여간 귀찮은 일이 아닙니다.
하지만 쉬운 방법이 있으니! 아래를 봐볼까요?

함수 설정

Fx를 불러볼까요? 엇! 너무 기분이 설리설리 한거 아니에요?
죄송합니다...
함수의 자세한 내용은 동영상을 참고하시고요. 여기서는 간단하게 설명하겠습니다.
함수를 쓰면 블록을 여러번 만드는 반복을 줄여서 편하구요
블럭이 간단해져 읽기 쉽습니다. 읽기가 쉽기 때문에 의미 전달이 잘 되겠죠!
즉, 함수를 사용함으로써 시간과 노력의 낭비를 줄일 수 있습니다.(항상 그런건 아니구요)

전화 걸기 기능과 문자 전송 기능을 함수로 표현해 봅시다.
[Procedures] -> [to procedure do] 블록을 끌어서 놓고 이름을 “CallFunction”이라 정하고 전화 거는 블록 덩어리를
갖다 넣습니다.
그리고 이와 같은 작업을 한번 더 하고 함수 이름을 “TextingFunction” 이라 정하고 여기에는 문자를 보내는 블록 덩어리를
갖다 넣습니다.

오! 전화 걸기, 문자 보내기 역할을 하는 함수를 만들었습니다.
이제 만들 함수를 불러다가 쓰기만 하면 되는군요.
Blocks 구역에 Procedure를 클릭해보면 [call CallFunction], [call TextingFunction]이 생성된 것을 확인 할 수 있습니다.
새롭게 생긴 이 두 블록은 우리가 만든 두 가지 함수를 불러 쓰는 역할을 합니다.
이 두 블록을 else 영역에 갖다 둡시다.

어때요? 카운트 다운 블록을 보니 좀 더 간단하게 의미를 알 수 있지 않나요?
아마 다음에 이 블록을 본다면 쉽게 의미를 이해 할 수 있을겁니다!
그리고 전화 걸기와 문자 보내기 기능을 다른 블록에서 사용할 때 다시 만들 필요 없이 만들어 놓은 함수를
불러오기만 하면 되니 참 간편하죠!

댓글

드림코드

CallFunction과 TextingFunction을 배치한 후 연속으로 close application 블록을 달아줘야 합니다. 그렇지 않으면 계속 전화와 문자가 갑니다. close application 블록은 Built-in > Control에 위치하고 있습니다.

14.07.10
Clean

그런데 TinyDB의 값을 다른 스크린으로 옮기는건 못하나요???

14.11.16
AllRound

문자의경우 단체문자 (한번에 여러명에게보내는기능)는 어떻게하나요??

※ 문자를 받는사람의 수가 정해져있지않는 경우 그때그때 10명이됄지 100명이될지 모를때

14.12.23
AllRound

1) 핸드폰 내에 있는 전화번호부에서 번호를 선택하거나 없는경우 입력하여보낼 수 있는 방법

2) 만약 10명에게 보내는데6명은 핸드폰의 전화번호부에 있는사람, 4명은 신규입력을 하여 보내야하는경우

이런 경우 어떤방법으로 만들게되는지 궁금합니다.

14.12.23
luckyguns

똑같이 했는데 No address available이라고 나옵니다. 휴대폰의 '위치'기능을 활성화 시켰는데도 안되네요. 조언 부탁드려요~~

16.04.08