모바일 개발자를 위한 머신러닝 https://firebase.google.com/products/ml-kit/?authuser=0 Firebase ML Kit를 사용하면 숙련된 머신러닝 개발자든 이제 막 시작한 초보자든 관계없이 강력한 머신러닝 기능을 Android용 또는 iOS용 앱에 도입할 수 있습니다. firebase.google.com ML Kit는 기기별 API 와 Cloud API가 있다. 기기별 API는 데이터를 빠르게 처리하고, 네트워크 연결 없이 작동하며, 클라우드 기반 API는 Google Cloud Platform의 강력한 머신러닝 기술을 활용하여 보다 높은 정확도를 제공한다고 한다..! 그리고 커스텀 모델도 사용할 수 있다...!!! >__
로그인도 Auth의 signIn 함수면 간단히 끝 -! FirebaseManager에 다음메소드를 추가하고 class func login(email: String, password: String, completion: @escaping (Result) -> Void) { Auth.auth().signIn(withEmail: email, password: password) { (result, error) in if let result = result { completion(.success(result)) } else if let error = error { completion(.failure(error)) } } } LoginViewModel도 구현해준다 struct LoginViewModel { stru..
회원가입은 Auth의 createUser라는 함수만 불러주면 쉽게 할 수 있다 FirebaseManager에 signup 메소드를 추가해준다 extension FirebaseManager { class func signup(email: String, password: String, completion: @escaping (Result) -> Void) { Auth.auth().createUser(withEmail: email, password: password) { (result, error) in if let result = result { completion(.success(result)) } else if let error = error { completion(.failure(error)) } } ..
firebase-modify라는 feature브랜치를 만들어줍니다 프로젝트에서는 modify 대신 change라는 용어를 사용하고 있는데, change라는 네이밍을 사용하여 코딩해주겠습니다 FirebaseManager에 change함수를 추가해줍니다 수정할 메모의 키값과 새로운 메모를 받는 함수입니다 class func change(key: String, to memo: Memo) { let rootRef = Database.database().reference() let memoRef = rootRef.child("memos").child(key) memoRef.setValue(memo.toDictionary()) } 수정을 누르면 이렇게 AlertViewController가 떠야하므로 textfiel..
firebase-delete라는 feature 브랜치를 하나 만들어줍니다 FirebaseManager 안에 delete라는 class fucntion을 만듭니다 class func delete(key: String) { let rootRef = Database.database().reference() let memoRef = rootRef.child("memos").child(key) memoRef.removeValue() } delete하려면 각 데이터(메모)의 key 값을 알고 있어야합니다 현재는 Memo를 Firebase에 추가할 때 firebase가 자동으로 key값(혹은 아이디 값) 을 만들어주게 설정되어있습니다 class func add(memo: Memo) { let rootRef = Dat..
일단 feature브랜치로 firebase-fetch를 하나 만들고 작업을 시작합니다 memos의 어떤 변화든 관찰하겠다(?) 하는 코드인데, let rootRef = Database.database().reference() rootRef.child("memos").observe(.value) { snapshot in let memosDic = snapshot.value as? [String: Any] ?? [:] for (key, value) in memosDic { print("key \(key) value\(value)") } } 딕셔너리를 출력해보면 key는 자동으로 만들어준 메모의 아이디 / value는 해당메모의 속성에 대한 딕셔너리이다 key -Lfu2XqePDtQA6KcyvJs value{..
FirebaseManager 클래스를 만들고 class fuction인 add를 만들어준다 import Foundation import Firebase class FirebaseManager { class func add(memo: Memo) { let rootRef = Database.database().reference() let memosRef = rootRef.child("memos") let memoRef = memosRef.childByAutoId() memoRef.setValue(memo.toDictionary()) } } Memo 구조체에 dictionary로 바꾸는 함수도 추가해준다 struct Memo { let title: String } extension Memo { func toD..
1. firebase-setup 이라는 feature 브랜치를 만든다 2. podfile에 pod 'Firebase/Core' 를 추가한다 실시간 데이터베이스를 사용할 것이므로 pod 'Firebase/Database' 이것도 추가하고 설치해준다 3. Firebase console 에 들어가서 프로젝트를 추가한다 4. Firebase에서 친절히 알려주는 대로 설정을 해준다 5. 앱이 콘솔에 추가되면 Realtime Database를 만들어준다 테스트 모드로 설정해서 읽기 쓰기 가능하게 해준다 --! 이것은 나중에 '규칙'에서 바꿀 수 있다
Firebase를 이용하여 메모를 추가하고 수정/삭제 할 수 있는 간단한 프로젝트를 해보자 : ) 플러스버튼을 눌러서 메모를 저장하고 왼쪽 스와이프로 메모를 수정, 오른쪽 스와이프로 삭제 하도록 프로젝트를 구성하자 이렇게 MVVM 구조로 프로젝트를 짰고 Rx를 사용하였다 : ) 소스코드는 깃헙 에서 볼 수 있다 + git도 같이 연습해보기 위해 master브랜치를 따서 develop브랜치를 만들었다 그 후, feature branch들로 firebase-setup / firebase-insert / firebase-delete / firebase-change 를 만들고 develop 브랜치에 merge해가면서 작업할 것이다 --!
- Total
- Today
- Yesterday
- SerializerMethodField
- Flutter Text Gradient
- flutter dynamic link
- DRF APIException
- Python Type Hint
- ribs
- Dart Factory
- Flutter Clipboard
- github actions
- ipad multitasking
- drf custom error
- Django Firebase Cloud Messaging
- Django FCM
- Django Heroku Scheduler
- flutter build mode
- Flutter 로딩
- cocoapod
- Flutter Spacer
- 장고 Custom Management Command
- METAL
- flutter 앱 출시
- 구글 Geocoding API
- 플러터 얼럿
- Watch App for iOS App vs Watch App
- Flutter getter setter
- Sketch 누끼
- PencilKit
- 플러터 싱글톤
- flutter deep link
- 장고 URL querystring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |