번호 : 011, 작성일자: 2025-03-24

2025.03.17 ~ 2025.03.23

👉 Flutter SNS 로그인 구현


Flutter로 SNS 로그인 기능을 구현해봤습니다.

카카오, 구글, 페이스북, 애플 총 4가지를 구현해보았는 데 Flutter 코드는 매우 간단했지만 각 서비스업체의 플랫폼등록과 AppKey 숨김처리 작업이 기능구현의 핵심이였습니다.

안드로이드는 SHA-1 인증서 지문을 활용하고 구글 로그인은 Firebase Auth 활용여부에 따라 프로젝트 설정의 약간 차이가 존재합니다.

🏢 MVC Todo 프로젝트 분석


Cocoa MVC 패턴을 사용할 때 보통 2가지 문제점을 이야기합니다.

  1. 캡슐화 원칙을 위반한다.
  2. ViewController가 너무 많은 로직을 담당한다.

위의 2가지 문제점을 해결한 방법을 예시로 보여주는 MVCTodo프로젝트를 확인해보고 어떤식으로 해결했는 지 자세히 알아봤습니다. ContainerViewController, ListViewController 라는 재사용가능한 ViewController를 활용하여 상태에 따라 자식 ViewController를 전환해가는 방식으로 Massive ViewController의 문제점을 해결하고 Coordinator를 활용하여 캡슐화원칙을 해결했습니다. 추후 Cocoa MVC 패턴을 사용할 때 참고하면 좋을 것 같습니다.

🦋 AppsFlyer In-App Event 작업 Tip


앱스플라이어 인앱이벤트를 추가하는 작업을 진행할 때 몇가지를 알면 도움이 될 것 같습니다.

  1. iOS에서 SDK를 연결한 경우 waitForATTUserAuthorization 메서드를 사용하면 앱 추적 투명성(ATT) 권한을 요청 받기 전까지 start 함수를 지연할 수 있습니다. 이러한 메서드를 제공하는 이유는 인앱이벤트에서 권한허용여부에 따라 IDFA 광고식별자 값을 추가하여 전송할 수 있기 때문입니다. 권한을 허용하지 않았다면 IDFA를 제외한 후 인앱이벤트를 전송합니다.
  2. Apps Flyer의 식별가능한 기기 ID를 SDK에서 getAppsFlyerUID() 메서드를 제공합니다. 해당 UID가 발급되는 시점은 앱이 설치된 후 SDK를 연결한 시점입니다. 그 외에 각 서비스별 구분자로는 CustomUserID값을 활용할 수 있습니다.
  3. 인앱 이벤트에서 파라미터를 사전 정의된 이벤트 이름을 사용하면 얻게 되는 장점은 오타와 수정시 편리하고 커스텀파라미터와 중복이 되는 위험요소를 제거할 수 있습니다. 그리고 커스텀 파라미터를 사용할 때 단점은 로데이터에 표시되지 않고 전환 데이터 SDK API에서 검색할 수 있습니다.
  4. 인앱 이벤트 확인은 대시보드 설정의 SDK 연동 테스트로 확인이 가능합니다.

🙋🏻‍♂️ 기타 사항


  1. 앱의 알림권한을 확인하기 위해 UNUserNotificationCenter.current().getNotificationSettings 를 사용하는 것이 맞는 것 같습니다. UIApplication.shared.isRegisteredForRemoteNotifications 는 APNs 등록여부를 확인하기 때문에 다른 곳에서 registerForRemoteNotifications() 를 호출하여 등록하면 잘못된 정보를 알 수 있기 때문입니다.
  2. AppDelegate의 applicationWillTerminate 호출이 잘 안된다면 → Info.plist파일에 Application can be killed immediately when user is shutting down or logging out 해당 키를 추가하고 true로 설정합니다.
  3. 시대별 프로그래밍 언어특징에 대해 정리를 잘한 블로그 글이 있습니다.
  4. Flutter 3.2.4버전이후로 SwiftPM을 지원 중입니다.