Getting Started with the Firebase Realtime Database on Android – Firecasts

안녕하세요? 파이어베이스팀의 데이비드입니다 파이어베이스의 새로운 시즌에 오신 것을 환영합니다 완전히 새로운 파이어베이스를 보실 겁니다 오늘 에피소드에서는 안드로이드에서 실시간 데이터베이스를 설정하는 방법을 알아볼 것입니다 이것이 정말로 쉽기 때문에 실제 앱을 만들면서 실시간 데이터베이스의 기본적인 부분들을 다뤄볼 것입니다 몇 분만에 이걸 사용하는데 필요한 기본적인 모든 부분들을 알게 되실 겁니다 그럼 시작해보겠습니다 그래들 파일을 엽니다 먼저, 구글 플레이 서비스를 포함시켜야 합니다 종속성에는 구글 플레이 서비스 30의 클래스 경로를 설정합니다 그리고 app build

gradle 파일을 엽니다 종속성 섹션에 파이어베이스 코어와 실시간 데이터베이스 종속성을 입력합니다 이는 comgooglefirebase 그리고 firebase-database와 firebase-core입니다 마지막으로 구글 플레이 서비스에 플러그인을 적용합니다 이제 됐습니다 이렇게 간단합니다 이제 다 준비되었으니 앱을 만들겠습니다 제가 만들 앱은 소셜, 로컬 그리고 모바일, 크라우드 소스 날씨 앱으로, 샌프란시스코의 날씨가 화창한지 안개가 있는지 알려줄 것입니다 매우 단순한 앱이지만 실시간으로 데이터를 저장하고 동기화하는 기본적인 부분을 다룹니다 그러니 어떻게 작동되는지 보여드리겠습니다 다 준비가 되었으니 UI를 만들어 보겠습니다 메인 액티비티 레이아웃을 엽니다 저장된 텍스트뷰를 지우고 큰 텍스트뷰를 스크린에 추가합니다 텍스트는 상태라고 설정하고 아이디는 텍스트뷰상태라고 입력합니다 그리고 화창한 날씨와 안개 낀 날씨 버튼을 추가합니다 하단에 버튼을 추가합니다 텍스트를 화창한 날씨로 입력하고 아이디를 화창한 날씨 버튼이라고 입력합니다 다른 버튼을 드래그해서 텍스트는 안개 낀 날씨로 아이디는 안개 낀 버튼으로 입력합니다 좋습니다 UI는 완성되었습니다 이러한 요소들을 메인 액티비티에 연결해야 합니다 메인 액티비티를 열어서 요소들을 속성으로 추가합니다 그리고 파인드뷰 바이 아이디를 사용하여 onCreate에 연결합니다 이제 실시간 데이터베이스에 작업을 하겠습니다 먼저, 연결이 되어야 합니다 이를 위해서, 데이터베이스 참조를 생성합니다 속성으로 데이터베이스 참조를 m루트 참조에 입력합니다 이것은 Firebasedatabase getinstance()getreference()입니다 루트Ref라고 이름을 붙인 이유는 참조를 가지게 될 때 참조를 파이어베이스 제이슨 트리의 루트로 얻기 때문입니다 그 다음으로 실시간 변경을 알리도록 하겠습니다 데이터베이스의 상태가 바뀌면 텍스트뷰의 텍스트 속성이 업데이트 되도록 하는 겁니다 이러한 변경을 알 수 있도록 온스타트 라이프 사이클 메소드에 벨류 리스너를 생성합니다 온스타트를 생성합니다 온스타트에서 다시 차일드 참조를 생성합니다 이것을 상태 참조라고 하겠습니다 이것은 루트 참조와 동등한 것으로

차일드를 호출하고 문자열 상태를 입력합니다 루트에 차일드를 호출하여 루트 아래에서 상태의 위치를 생성합니다 그리고 값을 설정합니다 화창한 날씨 또는 안개 낀 날씨 둘 중의 하나입니다 이걸 여기에서 복사하고 루트 ref 아래에 붙여놓습니다 그리고 mConditionRef라고 입력합니다 이제 상태 위치에 접근할 수 있으므로 리스너를 생성하겠습니다 온스타트가 있으므로 에드 밸류 이벤트 리스너 메소드를 호출하겠습니다 에드 밸류 이벤트 리스너를 mConditionRef에서 호출한 것을 기억하시길 바랍니다 이걸 상태의 위치에 붙이는 것입니다 이 안에 새로운 에드 밸류 이벤트 리스너를 입력합니다 이것은 익명의 이너 클래스 내부에 있는 두 개의 메소드입니다 첫 번째는 온데이터체인지입니다 이것은 실시간 데이터베이스에서 상태 값이 바뀌는 순간마다 작동됩니다 온캔슬드는 에러가 날 때 작동됩니다 온데이터체인지 안에서 데이터 스냅샷으로 데이터를 다시 받습니다 이 속에는 데이터와 다른 유용한 메소드가 있습니다 이 스냅샷을 이용하여 텍스트 뷰에 동기화하겠습니다 먼저, 데이터를 문자열로 다시 받겠습니다 dataSnapshotgetValue 를 호출합니다 문자열로 만들기 위해 Stringclass를 입력합니다 이게 문자열인지 확인되었으니 텍스트뷰로 가서 텍스트에 입력하여 설정 텍스트를 호출합니다 여기에는 앱이 작동되고 있습니다 그리고 여기에는 실시간 데이터베이스 뷰어가 있습니다 아직은 데이터가 없습니다 상태 위치를 추가하겠습니다 플러스를 클릭하고, 상태라고 입력합니다 초기값을 느낌표가 있는 화창한 날씨로 설정합니다 아무 변화가 없네요 왜 그럴까요? 보안 룰은 기본적으로 인증된 사용자만 데이터에 접근 가능하기 때문입니다 규칙 탭을 누르고 이러한 룰이 있는 걸 볼 수 있습니다 읽기와 쓰기가 있습니다 둘 다 널에 동등하지 않은 오프 값을 가지고 있습니다 오직 인증된 사용자만이 데이터베이스에서 읽고 쓸 수 있다고 적혀있습니다 지금은 개발하는 단계이므로 이러한 규칙으로 막을 필요가 없습니다 전체에 대해 읽기 쓰기를 가능하게 합니다 하지만, 배포할 앱을 만들 때는 누구나 다 사용할 수 있으므로 이렇게 하지 마시길 바랍니다 이게 좋은 게 아니라는 건 아실 겁니다 읽기에는 참으로 입력하고 쓰기도 참으로 입력한 다음에 변경사항을 적용하여 배포합니다 다시 데이터 탭으로 가서 앱을 재시동하겠습니다 보시다시피 화창한 날씨의 값이 있습니다 이를 확인하기 위해 값을 바꿔 보겠습니다 느낌표를 지워보겠습니다 그리고, 짜잔 실시간으로 업데이트 됩니다 잘 작동됩니다 하지만 버튼을 클릭했을 때 상태는 바뀌지 않으므로 텍스트뷰를 업데이트 해야 합니다 수정해보겠습니다 안드로이드 스튜디오에서 이 두 버튼에 클릭 리스너를 설정해야 합니다 mButtonSunny

setOnclicListener 를 입력하고 onClickLister를 넣습니다 클릭 리스너 내부에서는 mConditionRefsetValue를 호출합니다 여기서 상태 Ref는 이것을 /condition 위치로 연결합니다 이 지점에서 설정값을 호출하면 현재 있는 것을 대체합니다 이 경우는 화창한 날씨입니다 화창한 날씨 버튼을 누를 때마다 값은 화창한 날씨가 되도록 할 것입니다 화창한 날씨 문자열을 입력합니다 안개 낀 날씨의 경우에도 똑같이 복사합니다 이 절차를 이해하는 것은 매우 중요합니다 두 개의 클릭 리스너에서 설정값을 호출합니다 텍스트뷰를 직접적으로 업데이트하는 것도 아니고 내부의 데이터 소스를 직접적으로 업데이트하는 것도 아니며 실시간 데이터베이스를 업데이트하는 겁니다 실시간 데이터베이스가 업데이트 되면 onDataChange 메소드가 작동하여 텍스트뷰를 업데이트합니다 여기서 알 수 있는 사실은 로컬 상태를 변경하지 않는 것입니다 모든 것은 실시간 리스너에서 나옵니다 버튼을 누르면 실시간으로 데이터베이스가 업데이트되고 텍스트뷰가 바뀝니다 됐습니다 불과 몇 분만에 실시간 데이터베이스를 배웠습니다 오늘은 여기까지입니다 질문은 댓글로 남겨 주시고 트위터나 G+에서는 #AskFirebase 로 만납시다 며칠에 하나씩 파이어캐스트 영상을 올릴 예정입니다 그러니 구독 버튼 눌러 주시길 바랍니다 데이비드 이스트입니다 시청해 주셔서 감사합니다