상세 컨텐츠

본문 제목

[Flutter] 간단 당근 (pagination, FCM push, internationalization, mixin)

notes

by 서울의볼 2024. 5. 1. 19:49

본문

3.10.2) nav 패키지 이용

- 기존의 Nav.push에 다양한 효과 줌 (GestureDetector, animation)

- history가 필요없으면 pushReplacement 쓰면 됨.

- root navigator, nested navigator 개념 설명 및 적용.

 

3.10.3)

- 라우팅 요목조목 설명

 

3.10.4)

- 추가 수정: Hero 이용하여 상세페이지 넘어갈 때 클린한 리스트 내 사진이 커지며 넘어감. 텍스트도 다음 페이지 넘어갈 때 트랜지션 줌.

 

3.10.5)

- go router 패키지 이용하여 페이지 내 여러 라우터로 넘어갈 수 있음. 기존엔 라우터 내 다른 위젯스크린들로 라우팅하는 방식이었으나, 페이지라는 컨테이너(?)가 하나 더 생긴 느낌임.

- go router 사용하면 위에 썼던 nav 패키지 사용 불가해짐.

- static 변수는 각 클래스별 하나씩 존재할 수 있는 전역변수임.

- 초기세팅이 복잡하나, deeplink나 fcm push할 때 유용하다 함. 많은 기업이 go router 사용하니 너도 쓰래.

 

3.11.1-3) DeepLink

- 외부채널(광고, 브라우저, 메신저 등)을 통해 앱으로 유입시 딥링크를 통해 들어오게끔 함.

- 파베 다이나믹링크는 25년에 서비스 종료 예정이라 공식적인 대체 방법으로 android는 app link, ios는 universal link를 사용해야 함 (근데 웹서버 필요함).

작동방식

- 대안은 airbridge, branch io, adjust 등이 있는데, 본 강의에선 airbridge 사용법 설명.

 

3.12.1-2) FCM Push Firebase Cloud Messaging

- FCM 개념 설명. 작동 방식:

- fcm push 상태 3가지: foreground(resumed) / background(paused) / not running(detached 또는 앱이 최초에 실행될 때)

- ios app lifecycle:

- android app lifecycle:

3.12.3)

- firebase 연동 방법 설명

- 연동과정 중 상당히 많은 문제점이 있었음.

- 첫번째로, dart pub global activate flutterfire_cli 명령어를 실행했으나, 아래와 같은 에러가 나옴:

Warning: Pub installs executables into $HOME/.pub-cache/bin, which is not on your path.
You can fix that by adding this to your shell's config file (.bashrc, .bash_profile, etc.):

  export PATH="$PATH":"$HOME/.pub-cache/bin"

환경변수를 추가해야 하는데, vi ~/.zshrc로 들어가서 i를 누르고 맨 밑에 위의 export~~~를 추가해줌. esc - : - wq - enter 누르고 나옴.

다시 dart pub global activate flutterfire_cli 실행하면 문제 없이 잘 됨.

- 두번째로, ios simulator를 키고 앱을 실행시켰는데 Error: CocoaPods's specs repository is too out-of-date to satisfy dependencies. 디버그 에러가 나옴.

기존의 cocoapods 버전이 outdated돼서 그런건데, 해당 파일 내 ios 파일에 들어가서 pod install --repo-update 해줌.

근데 또 아래와 같은 에러가 뜸:

[!] CocoaPods could not find compatible versions for pod "Firebase/CoreOnly":
  In snapshot (Podfile.lock):
    Firebase/CoreOnly (= 10.15.0)

  In Podfile:
    firebase_core (from `.symlinks/plugins/firebase_core/ios`) was resolved to 2.30.1, which depends on
      Firebase/CoreOnly (= 10.24.0)


You have either:
 * changed the constraints of dependency `Firebase/CoreOnly` inside your development pod `firebase_core`.
   You should run `pod update Firebase/CoreOnly` to apply changes you've made.

그래서 하란대로 pod update Firebase/CoreOnly 해주니 모두 업뎃 됨.

 

이러면 인간적으로 될 줄 알았는데...

Launching lib/main.dart on iPhone 15 Pro in debug mode...
Running pod install...
Running Xcode build...
Xcode build done.                                           41.8s
Failed to build iOS app
Error (Xcode): ../../.pub-cache/hosted/pub.dev/cached_network_image-3.2.3/lib/src/image_provider/cached_network_image_provider.dart:78:54: Error: Type 'DecoderCallback' not found.

Could not build the application for the simulator.
Error launching application on iPhone 15 Pro. ㅇㅈㄹ

- DecodoerCallback이 새버전과 버전이 맞지 않아 발생한 문제 같아보임.

- flutter pub add cached_network_image <-- 해당 패키지를 다시 깔았더니 정상적으로 실행됐음. 먼길이었다...

 

3.12.4-5)

- ios에 fcm push 하려면 apple developer account가 있어야 하고 99달러 정도 지불해야 한다고 함...

- message 보낼때 중요한 것이 click_action 키값을 넣는거. 잊지마셈! (이래야 유저가 상단의 노티 누를 때 잘 열린대)

- 각 lifecycle 별 FCM push 구현.

 

3.13.1-2)

- Internalization 활용하면 각 지역별로 디폴트 언어 설정도 되고, 언어별 json도 만들어두면 됨.

- sheet_loader_localization 패키지가 다양한 언어 설정에 유용함.

 

3.14.1-2)

- extension 사용법 상세 설명.

- 시간제한을 둔 캐싱 방법도 알려줌 (keepAlive)

- mixin 활용법 상세 설명 (override issues, private(언더바)로 변수 선언 필수적).

개념

- 인앱이나 구독 등 결제 관련 mixin 구현해줌.

*late 쓰는걸 lazy초기화 라고 하는 듯?

 

 

 

5.1.1-5)

Firebase는 BaaS platform이다~

서비스 종류

 

 

출처: 패스트캠퍼스

관련글 더보기