유투브를 삽입하기 위해 먼저 디자이너탭에서 Button과 ActivityStarter를 추가하고, 버튼 text는 "유투브"로 한다.
블록
탭
에서
버튼 클릭시 이벤트를 처리하기 위해 when Button1.Click do에 set ActivityStarter1.Action to "android.intent.action.VIEW"(다른앱도 공통), set ActivityStarter1.DataUri to "https://youtu.be/giW2i5W9O7c"(적절한 유투브 영상공유하기로 주소복사해서 붙이기), call ActivityStart1.StartActivity를 하면된다.
3. (심화문제) 사용자가 직접 새로운 관광지와 URL을 추가할 수 있는 앱으로 확장해 보자. 이제 관광지 정보를 TinyWebDB에 저장해야 한다. TinyWebDB의 사용법에 대해서는 10장의 <퀴즈만들기>, <퀴즈풀기> 앱을 참고한다.
디자이너탭
에서 TextBox1, TextBox2를 추가하여, 각각 관광지와 관광지URL(구글지도검색)주소를 입력받을 수 있게 만들어 놓는다. 그리고, 밑에 "저장하기" 버튼(button)을 만들자. 웹뷰는 그냥 원래거 사용해도 되고, TinyWebDB를 추가하자. 그리고 나머지 문구도 적절히 수정한다.
블록
탭
에서
먼저 입력받은 여행지 정보를 저장하고 사용자가 볼 수 있도록 띄우기 위해서, 리스트 목록이 필요하다. 각각 리스트 목록이 저장될 변수 initialize global tourlist tocreate empty list와 initialize global urllist tocreate empty list를 선언한다. 그리고 사용자가 선택할 수 있는 리스트 목록을 보여주고, 이것을 웹뷰어로 연결하기 위한 작업을 하는데, when ListPicker1.AfterPicking do 에 call WebViewer1.GoToUrl url에 select list item list를 get global urllist, index를 ListPicker1.SelectionIndex (사용자가 선택하는 항목)로 설정하여 끼운다. 위와 같이 했으면, 이 번엔 "저장하기"버튼을 눌렀을 때 발생하는 이벤트를 처리해야 하는데, when 저장하기.Click do에 관광지와 URL 변수에 저장하는 실행문 add items to list list에 get global tourlist를 item에 TextBox1.Text (첫번째 입력값 관광지명이 입력된다)를 입력하고, add items to list list에 get global urllist를 item에 TextBox2.Text (두번째 입력값인 Url이 입력된다)를 입력하고, 다시 새로운 값을 입력받기 위한 대기상태인 공백을 만들어야 하므로, set TextBox1.Text to"", set TextBox2.Text to ""를 끼운다. 그리고 입력받은 정보들을 웹에 클라우드 형식으로 저장하기 위해서 TinyWebDB를 사용하는데, call TinyWebDB1.StoreValue tag "tours", valueToStore에 get global tourlist를 입력한다. 만찬가지로 url도 처리해야 하므로 call TinyWebDB1.StoreValue tag"url", valueToStore에 get global urllist를 입력한다. 이를 완성했다면, 앱이 종료했다가 실행될 때 웹에서 내가 입력했던 데이터들을 리스트 목록으로 가져와야 하는데, 이를 처리하기 위해 when TinyWebDB1.GotValue do에 if then 을 가져와서 끼우고, if에 is a list? thingget valueFromWebDB (웹DB에 자료가 저장되어 있다면 아래 명령을 수행하라)를, then에 또 다시 if then else 목록을 만들어 if에 get tagFromWebDB = "tours" (웹DB에서 가져온 데이터가 tours가 맞다면), then에 set global tourlist toget valueFromWebDB (웹DB값을 tourlist 목록에 추가하고), else에 set global urllist toget valueFromWebDB (그렇지 않으면, urllist 목록에 추가해라)를 만들어 끼우고또다시 if then 을 새로 가져와서, 여행지와 여행지url이 갯수가 같다면, 리스트목록을 나타내기 위해 if에 length of list listget global tourlist=length of list listget global urllist 를, then에 set ListPicker1.Elements toget global tourlist를 조립한다. 그리고 최종적으로 앱이 재실행될때 가장 먼저 수행해야 하는 값을 Screen에 등록해야 하는데, 웹DB를 클라우드로 바로 가져오는 일부터 앱이 수행할 수 있도록, when Screen1.Initialize do 에 call TinyWebDB1.GetValue tag에 "tours", call TinyWebDB1.GetValue 하나 더 추가해서 tag에 url을 설정해 준다.
아래는 완성한 전체코드 이다. 입력이 안된줄 알고 에펠탑을 여러번 입력했는데, 웹DB에 저장이 되있었나 보다. 그외에는 그냥 한개씩 추가해 본 것들이다. 잘 실행된다.
<출처 : David Wolber, Hal Abelson, Ellen Spertus, Liz Looney(2015),