티스토리 뷰

반응형

안녕하세요 :)

오늘은 드디어 Firebase사용법에 대해 글을 써보려고 합니다 XD

혹시 Firebase가 뭔지 아시나요?


먼저 우리가 앱이나 웹을 만든다고 생각해볼게요.

그것도 서버와 데이터베이스가 있는...!@!@!@!

서버 구축하고..데이터베이스 구축하고....정말 불편하죠 ㅠㅜ

그것을 간단하게 해주는 것이 Firebase입니다!



위 사진을 보시면 서버개발이 쏙 사라진 것을 볼 수 있죠?

이렇게 firebase를 쓰면 작업시간을 단축 할 수 있습니다.

그리고 firebase에는 엄청나게 많는 기능들이 있어요!!!


간단하게 그림으로 보여드리자면, 



이렇게 많은 기능들이 있답니다.....

앱에 광고들 있죠? AdMob이라는 기능을 통해 수익도 창출할 수 있어요!


이 firebase를 써야하는 또 다른 이유는..?

부스트캠프에서 박종욱 튜터님이 말씀하셨는데요,

바로


 빠른시간안에 앱의 프로토타입을 만들어낼 있기 때문


이에요.

박종욱 튜터님이 예를 드신게 있는데,




아이디어는 우유다.

아이디어가 생각났을 때 기획만 하면 이상해진다.

생각이 났을 때 빨리 프로토타입으로 만들어내야한다.




라고 하셨어요.

정말 맞는 말이죠?

제가 멋진 아이디어가 생각나서

팀원들한테 내가 이러한 아이디어가 있어!!

라고 했어요.

제가 어떤 기능을 말했을 때, 모두 그 기능이 어떤식으로 실행될지

똑같이 상상할까요?


아니겠죠?


자 모두 다른 상상을 하고 

그래. 그거 한번 만들어보자

라고 했다고 칩시다.

그럼 또 기획부터 어떤 기능이 어떻고~~

이 기획만 한달 넘게 하다가

처음 아이디어와는 딴판인 기획안들이 생기면서

그 아이디어는 흐지부지 될 수 있어요.



그러니까!!

 내가 아이디어가 생각났으면,

그 아이디어를 빨리 프로토타입으로 만들어서

직접 보여주면서 

내가 생각한게 이거였어!!

하고 보여줘야 한다는 거죠.


그럼 다들 그 앱을 직접 '보면서' 

기능들이 어떤지, 어떤식으로 되는지

알 수 있겠죠?


그러니까 결론은

프로토타입을 만들어야한다는 건데,

이 프로토타입을 빨리 만들어주는 것이

바로 

!!!!!!firebase라는 것입니다!!!!!!


네. 서론이 엄청 길었지만 firebase를 

 써야하는지, 쓰면 뭐가 좋은지 알려드리고 싶었어요 :)


그럼 한번 써보러 갑시다.......>_0


(이제부터 나올 예제는 모두 박종욱 튜터님이 가르쳐주신 것을 

그대로 따라하는 과정입니다.)


우리는 간단한 ToDo앱을 만들거에요.


BoostCampInterview_demo-3.zip


위 파일을 다운받아주세요:)

ㅠㅠ 박종욱 튜터님의 드롭박스 주소가 있긴한데

이 주소를 마음대로 블로그에 올려도 되는지.....!!!!

모르겠어서 OTL


일단 파일을 올립니다.

문제가 된다면 바로!!내리겠습니다.


ㅎㅎ

자, 다운받았죠?

실행해봅시다!!!!!XD

앱의 첫 화면입니다 +버튼을 눌러줄게요.

할 일을 추가해주시면


이렇게 추가가 된답니다 :)


우리가 이 앱을 가지고 만들 기능은

추가한 할 일들을 firebase데이터베이스에 올리는 기능입니다!

ㅎㅎㅎ


일단 환경설정 작업이 필요해요.

그건 여기에 다 나와있긴 한데...

같이 해볼게요 :)

먼저 cocoaPods으로 firebase를 설치해주어야 합니다.

우리 cocoaPods쓰는법은

제 이전글에서 배웠죠?

cocoaPods쓰는법을 아직 모르신다면 보고오시는 것을 추천드립니당




Podfile에


pod 'Firebase/Core'

pod 'Firebase/Database'

를 추가해주세요.

우리는 데이터베이스 기능을 사용한다고 그랬죠?

그래서 Firebase/Database를 추가해준 거랍니다 :)

다른 기능들을 사용하고 싶으시면,


이 표를 보시고 자기가 원하는 기능을 Podfile에 추가해주세요!



자, 이제 기본적인 환경설정은 끝났어요 XD

이제 firebase로 가서 제 앱을 등록할 차례입니다.

https://console.firebase.google.com

에 가봅시다. 


당연히 구글 로그인 해야합니다!!




새 프로젝트 만들기에 들어가주세요. 



자신의 앱이름을 등록해주시고, 대한민국을 선택해주세요 :)


그러면


이러한 화면이 뜨게 됩니다 :)

여기서 iOS앱에 Firebase추가를 눌러주세요. 




그럼 이러한 화면이 나오게 되죠?

iOS 번들 ID를 써주시고,

앱닉네임과 app store ID를 써주세요 :)

위 두가지는 선택사항이라 꼭 안써주셔도 되요!

전 안썼습니닿ㅎ


그리고 앱추가를 눌러주세요.



그리고 GoogleService-Info.plist를 다운받아주세요.

그리고 Xcode프로젝트에 추가하라고 하네요? 



추가해줍시다 ㅎㅎ


그리고 계속을 눌러주세요.


앗 이건 우리가 아까 했죠?ㅎㅎㅎㅎ

넘어가줍시다

계속을 눌러주세요.



자, 마지막 단계인데요.

AppDelegate에 위 코드를 추가해주라고 하네요?

해줍시다.



추가해줬어요.


그리고 완료버튼을 누르면~



이런게 뜹니다!!


사용자수와 비정상종료 분석도 해주네요 :)


자, 이제 Xcode로 돌아가 이 firebase DB를 업데이트 하는코드를 

추가해줍시다.


여기에 가시면 상세하게 나와있지만

일단 같이 해봅시다 :)



(+ 위에까지 쓰고 무려 세시간이 지난 지금..

오류 두개 고친다고 세시간을 썼네요 ㅎ..

이러한 삽질은 정말 좋은거라고 생각해요......... 

다음에 절대 똑같은 실수 안할거니까................ㅠㅠ)


자!!!!다시 가봅시다.

일단 해줘야하는 설정이 있는데, 프로젝트에 가셔서

Bundle ID를 바꿔줘야 한답니다.

아까 위에 적었던 Bundle ID를 적어주세요!


그리고나서 프로젝트의 viewController.swift로 가주세요.




Firebase를 import하고~

var ref : FIRDatabaseReference!

 ref는 내 firebase 데이터베이스의 주소가 저장될 변수입니다.

그리고,

@IBAction func addTodo로 가주세요!!







 self.ref = FIRDatabase.database().reference()

 let itemRef = self.ref.child("list")

 itemRef.setValue(self.todos)


위 코드를 추가해주세요!

자 하나씩 살펴볼까요?

ref에 내 fireDatabase의 주소를 넣어줍니다.

reference는 데이터베이스의 특정 위치를 나타내며, 해당 데이터베이스 위치로 데이터를 읽거나 쓸 수 있게 만들어 줍니다.


그리고

itemRef라는 변수를 만들어주었네요.

이 itemRef는 위 데이터베이스의 위치(ref)의 child라고 하네요. 

child는 지정된 상대 경로에있는 위치의 주소를 가져오는 프로퍼티입니다. 


그리고 그 경로에 setValue해주네요.

네. 현재 제가 입력한 newTodo를 todos배열에 넣어주었죠?

우리는 모든 할 일들을 DB에 저장하고 싶으므로 배열을 넘겨줍니다.


자. 한번 실행해 볼까요? 





네. 할 일은 앱에서 잘 들어가는데,

우리가 만든 데이터베이스에는 추가가 안되죠?

그리고 Xcode에 이러한 메세지가 나옵니다.



권한이 거부되었다고 나오네요..


네. 우리가 처음 DB를 만들면 아무나 이 DB를 수정하거나 읽을 수 없도록 

firebase에서 권한 설정을 해놓습니다.

지금 우리는 아무나 써도 상관없는 앱이죠?

권한을 주러 가봅시다 ㅎㅎㅎ


아까 제 DB화면으로 가서,



규칙으로 들어가주세요.


그러면 코드들이 있죠?


이 코드들을 바꿔서 모든 사람이 읽고 쓸 수 있도록 바꿀거에요.



{ "rules": { ".read": true, ".write": true } }


위 코드를 저 규칙에 넣어주세요.



그리고 게시!!

ㅎㅎ


자, 이제 다시 실행해 볼까요? 

할일을 입력 해봅시다.

데이터베이스가 업데이트 됐는지 볼까요?


XD

와 됐어요!!

저 list라는 디렉토리는 아까 저희가 지정해준 이름이죠?

하위 디렉토리를 계속 생성 할 수도 있답니다 :)


아까 코드에서


let itemRef = self.ref.child("list/firebaseTest/zedd")


이부분을 저렇게 바꿔주면,


짠~

ㅎㅎㅎㅎ어때요

서버, DB설치없이 간단하게 데이터를 저장했죠??


:)도움이 되었으면 좋겠어요.

저 permission_denied오류때문에 정말ㅠㅠㅠ

박종욱튜터님이 다 가르쳐 주신건데,

제가 깜빡했어요ㅜㅜ


그리고 오류가 하나 더 있었어요 (부들)

위에서 GoogleService-Info.plist를 다운받았었죠?

저는 옛날에 이 plist파일을 한번 받은 적이 있어서

다운로드폴더로 들어갈 때

GoogleService-Info-2.plist로 들어갔었어요.

저는 아무생각없이 프로젝트에 추가해줬죠.

하지만 Xcode는 


Could not locate configuration file: 'GoogleService-Info.plist'.


could not find a valid GoogleService-Info.plist in your project. Please download one from https://console.firebase.google.com/.'


ㅎㅎ..

난 분명히!!넣어줬는데 왜 이런 오류가 나는거지 하고 정말 한참을 헤맸어요.

그러다가 이름이 잘못됐다는 것을 알았어요.




Xcode firebase 프레임 워크는 코드 작성시 GoogleService-Info.plist를 통해 firebase에 연결됩니다. 


.plist 파일이 정확히 호출되지 않으면 오류가 표시됩니다 (GoogleService-Info.plist). 


.plist 파일이름에 다른 문자를 가지고있는 순간 firebase 프레임 워크는 그것을 인식하지 못합니다. 

프레임워크 작업은 'GoogleService-Info-2.plist'가 아닌 'GoogleService-Info.plist'만 검색합니다.







ㅎㅎ반드시!!!

GoogleService-Info.plist이름을 정확하게 해주는 것.

잊지마세요!!!


이렇게 firebase글도 마칩니다ㅎㅎㅎ

firebase를 어렵게 생각하지 않으셨으면 좋겠어요!!



반응형