Programming2016.06.17 12:06

Google I/O 에서 Firebase 에 대한 발표 후 Firebase에 대한 언급이 많아지고 있네요.


테스트를 해보니 채팅을 구현하기 정말 쉬울 것 같아서 한번 만들어 보겠습니다.


채팅 구현에 여러가지 기능을 넣을 수 있겠지만 텍스트 대화와 푸시없이 구현하도록 하겠습니다.


사용하는 Firebase의 기능은 Realtime database, Authentication 입니다.



Firebase 프로젝트 설정


https://console.firebase.google.com 접속

`새로만들기` 클릭


프로젝트 `이름`과 `국가/지역` 선택



iOS 앱에 Firebase 추가



`iOS 번들 ID` 입력 (실제 iOS  bundle id 와 같아야 합니다.)



`앱 추가` 버튼을 클릭하면 `GoogleService-info.plist` 파일을 다운로드 받게 됩니다. 나중에 xcode(appcode) project 생성 후에 추가해야 하니 보관해두세요.


이후 나오는 `계속`, `완료` 버튼을 눌러 `iOS 앱에 Firebase 추가` 과정을 끝냅니다.


앱이 추가되었습니다.




회원 인증 설정


어떤 채팅이든 유저를 구분할 수 있는 로그인이 필요하죠.


Firebase에서는 Auth를 이용해 쉽게 회원기능(회원가입/ 로그인)을 구현할 수 있습니다.


Authentication (https://firebase.google.com/docs/auth/)


Authentication 에서는 이메일 인증부터 구글, 페이스북등 다양한 소셜 로그인 기능과 익명 기능이 제공됩니다.

우리 프로젝트는 익명 채팅으로 구현할거에요. 


Anonymous Authentication (https://firebase.google.com/docs/auth/ios/anonymous-auth)


콘솔 메뉴에서 Auth 를 선택합니다.




로그인 방법 설정을 클릭합니다.



  1. Anonymous 선택
  2. 사용 설정 켜기
  3. 저장



사용 설정 완료~!!!




Firebase에서 프로젝트 설정은 끝났습니다. 



iOS 프로젝트 설정


Xcode의 프로젝트 생성은 많이 해보셨을테니 저는 Appcode로 하겠습니다. ㅋ


(사용하는 Appcode의 버전은 2016.2 EAP 입니다.)


앱코드(Appcode) 실행

New project




iOS > Application > Single View Application 선택 후 Next

`Product Name`, `Organization Name`, `Organization Identifier` 입력

언어는 Objective-C, Swift 둘중 편한걸 선택하세요. 저는  Swift입니다

설정이 끝났다면 Finish




Appcode는 cocoapods이 통합되어 있어서 IDE안에서 cocoapods을 사용 가능합니다.

cocoapods podfile 생성



podfile 작성 후 pod install (cocoapods 에서 확인하세요)

platform :ios, '9.0'
use_frameworks!

target 'Shouting' do
  pod 'Firebase/Auth'
  pod 'Firebase/Database'
end


AppDelegate.swift


import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        FIRApp.configure()
        return true
    }
}

Firebase console 에서 받은 GoogleService-Info.plist 를 Shouting 프로젝트에 추가합니다.



빌드하고 실행하면 오류 없이 정상 실행됩니다.


다음은 iOS 앱에서 채팅을 구현해 볼까요?

신고
Posted by 초프(초보 프로그래머)
아직 기본적인 기능만 구현되었습니다.
편의를 위한 기능이 들어갈 예정입니다.
UI를 개선하기 위해 디자이너와 작업중입니다.
서버의 작업이 늦어져서 초기에 많은 도서관을 지원하지는 못할것 같습니다. ㅜ.ㅜ



신고
Posted by 초프(초보 프로그래머)
Project2011.01.09 23:31
가장 크게 변경된 부분은 역시 글을 읽는 부분입니다.

한 화면에 맞게 글이 출력되어 스크롤이 없어 읽기가 편합니다.

색, 여백, 폰트등 사용자가 원하는 대로 여러 설정을 변경할 수 있습니다.

한번 선택한 인코딩은 계속 적용되므로 볼때 마다 선택 안하셔도 됩니다.



신고
Posted by 초프(초보 프로그래머)
Project2011.01.09 23:31
가장 크게 변경된 부분은 역시 글을 읽는 부분입니다.

한 화면에 맞게 글이 출력되어 스크롤이 없어 읽기가 편합니다.

색, 여백, 폰트등 사용자가 원하는 대로 여러 설정을 변경할 수 있습니다.

한번 선택한 인코딩은 계속 적용되므로 볼때 마다 선택 안하셔도 됩니다.



신고
Posted by 초프(초보 프로그래머)
Project2011.01.09 23:31
가장 크게 변경된 부분은 역시 글을 읽는 부분입니다.

한 화면에 맞게 글이 출력되어 스크롤이 없어 읽기가 편합니다.

색, 여백, 폰트등 사용자가 원하는 대로 여러 설정을 변경할 수 있습니다.

한번 선택한 인코딩은 계속 적용되므로 볼때 마다 선택 안하셔도 됩니다.



신고
Posted by 초프(초보 프로그래머)
Project2011.01.09 23:31
가장 크게 변경된 부분은 역시 글을 읽는 부분입니다.

한 화면에 맞게 글이 출력되어 스크롤이 없어 읽기가 편합니다.

색, 여백, 폰트등 사용자가 원하는 대로 여러 설정을 변경할 수 있습니다.

한번 선택한 인코딩은 계속 적용되므로 볼때 마다 선택 안하셔도 됩니다.



신고
Posted by 초프(초보 프로그래머)
Project2011.01.09 23:31
가장 크게 변경된 부분은 역시 글을 읽는 부분입니다.

한 화면에 맞게 글이 출력되어 스크롤이 없어 읽기가 편합니다.

색, 여백, 폰트등 사용자가 원하는 대로 여러 설정을 변경할 수 있습니다.

한번 선택한 인코딩은 계속 적용되므로 볼때 마다 선택 안하셔도 됩니다.



신고
Posted by 초프(초보 프로그래머)
Project2010.11.25 03:43
아이폰용 중앙대 식단 정보가 나와서 안드로이드용으로 만들기 위해 작업 중입니다.

이미 몇 주전 부터 작업을 시작하였으나 계속 미뤄져 왔네요.

지금 소개하는 내용도 이미 몇 주 전에 완성된 부분입니다.




XML 데이터 형식을 간단히 보여드리자면 다음과 같습니다.


DB에 정보를 저장하고 가져오는 부분까지 만들었습니다. 아직 완벽한 상태는 아니지만요....

안드로이드 어플을 만들어야 하는데... 계속 미뤄지고 있네요
곧 방학인데.... 곧 졸업인데.... 어쩌지.... ^^;

신고
Posted by 초프(초보 프로그래머)
1.0.0 버전으로 바뀌고 나서 가장 문제가 되었던 부분이 `나의 도서관`에 등록해 놓은 도서관의 정보가 서버에서 수정되었을 경우 사용자의 어플에 적용시키는 문제였습니다. 

처음 생각은 업데이트 버튼을 놓고 수동으로 업데이트할 예정이었습니다. 기존 버전에서 전체 도서관의 업데이트 정보를 받는 과정이 너무 불편하다는 의견이 많았던 이유와 같은 이유 때문이었습니다.

그래서 나의 도서관에 있는 도서관만 시작시 업데이트 하도록 변경하였습니다.
정보의 주소가 바뀌어서 정보 조회가 안될 경우가 간혹 있는데 지금 까지는 나의 도서관을 삭제 하고 다시 추가해야만 했습니다. 하지만 이제는 그런 수고를 하지 않아도 됩니다. 시작할때 자동으로 업데이트를 해주니까요~

사용자 쪽에서의 문제는 사라졌지만 내부적인 문제가 아직도 남아 있습니다.
기존에는 나의 도서관 정보를 다 저장했지만 지금은 도서관 번호만 저장하면 됩니다.
빠른 업데이트를 위해 기존 저장 방식을 그대로 두고 번호만 사용하는 방식을 사용하고 있습니다.
쓸모 없는 정보가 저장되어 메모리 낭비가 있기는 하지만 1kb도 안되는 작은 용량이어서 그대로 두고 다음 업데이트때 수정할 계획입니다.


자동업데이트와 더불어 업데이트된 부분은 2개의 도서관 추가 입니다.
용인시 기흥도서관, 부천시 해밀도서관 정보를 파싱하는 부분이 기존 것과 달라서 새로 만들게 되었습니다.


신고
Posted by 초프(초보 프로그래머)