✅ 오늘 배운 것
오늘과 어제는 많은 일이 있어서 우선은 context 정리가 필요할 것 같다. 크게는 동기화 관련된 논의와 디자인 관련 논의가 있겠다.
동기화의 경우, iOS 출시를 시작하면서 문제점이 발견되었다. 현재 안드로이드만 출시된 우리 앱은 rnfirebase의 messaging().getToken() 이라는 메소드를 통해 FCM(firebase cloud messaging) 토큰을 받고 있었다. 그런데 문제는 iOS의 경우 사용자가 알림을 띄우는 것을 허용하지 않으면 이 토큰값을 받아올 수 없었다. 그런데 백엔드 서버에서는 이 값을 기준으로 요청을 보낸 식별하기 때문에, 이 값이 없으면 클라이언트에서도, 서버에서도 에러가 나는 문제가 생겼다.
처음에 팀원들과 논의해서 나온 방안은 두 가지였다.
- 알림 표시를 허용하지 않으면 앱을 사용할 수 없게끔 하기
- 11월 전까지, 2주 안에 구현 가능한 동기화 방법(후보는 롱 폴링과 웹소켓이다)을 찾아서 푸시 알람 대신 다른 방법으로 동기화 구현하기
그러다가 어제 저녁 멘토님과 개인 면담을 했는데, 멘토님께서 또 다른 방향의 조언을 주셨다.
- 현재 문제가 되는 것은 '한 사용자의 두 개 이상의 기기가 동시에 켜져 있고 업데이트를 받는 것'이며 일반적인 사용에는 fcm 토큰이 없어도 무리가 없다. 그렇다면 '알림을 허용하지 않으면 다중 기기 동기화에 문제가 있을 수도 있다'고 사전 고지하고 만약 알림에 동의하지 않으면 그냥 사용하게 할 수 있겠다. 이 방식이 가장 빠른 방식이므로, 우선은 이 방식대로 iOS를 출시한 뒤 추후 방법을 찾아보자.
- 추후 방법 중 하나는 현재 프론트에서 사용하는 expo에서 제공하는 backgroundFetch 기능이다. 말은 backgroundFetch인데, foreground에서도 동기화를 지원할 수도 있겠다.
- 구글 드라이브 동기화 방법도 있다. 이 경우 서비스에서 사용자의 데이터를 저장하는 별도의 DB가 필요하지 않으며 서버에서 API만 지원하면 된다. 대신에 초기에 공부는 좀 필요할 것이다.
그래서 일단은 1번의 방향으로 진행하기로 했다. 다만 이 경우 현재 코드에서는 rnfirebase의 messaging().getToken()으로 fcm 토큰을 못 받아오면 클라이언트에서도, 서버에서도 에러가 날 여지가 있기 때문에 관련 로직을 수정해서 디바이스 토큰을 못 받아왔을 경우에도 잘 동작하도록 바꿔 주어야 하겠다.
디자인 관련 논의의 경우, 원래는 디자인비를 쓸 생각이 없었는데 어제 프론트 멘토님께서 앱의 완성도를 높이거나 사용자를 더 효과적으로 유치하려면 디자인도 중요한 요소라고 말씀해 주셨던 것이 하나의 계기가 되었다. (또 다른 이유로는 프로젝트 활동비가 너무 많이 남아서이기도 했다.)
처음에는 그런데 이걸 지금 맡기면 언제 완성하나 싶었는데(기말평가는 11월 중순이다), 생각해 보면 12월 이후에 사이드 프로젝트로 이것을 계속 이어갈 수도 있는 거였다. 그때는 디자인 외주를 우리의 돈으로 진행해야 하기에, 그럴 때 완성된 디자인을 보고 작업하려면 지금도 디자인 외주를 신청하는 것이 늦지 않았겠다는 생각이 들었다.
아무튼 그래서 디자인 외주를 급하게 알아보기로 했고, 중간에 1시간의 회의를 통해 다음과 같은 사항을 논의해서 합의에 이르렀다. (노션 멘토링 페이지에 작성해 두었다)
- 디자인 외주로 무엇을 맡길 것인가
- 디자이너 컨택을 어떻게 할 것인가
- 작업 요청서에는 무슨 내용을 작성할 것인가
- 디자이너 컨택을 하고 작업물을 받아오는 동안 해 보면 좋을 것들은 무엇인가
그래서 방금 전까지는 디자이너 분께 우리가 피그마로 뚝딱뚝딱, 얼기설기 만든 화면에 대해서 각자 개선하면 좋을 점들을 코멘트로 달아두고 왔다. 그리고 디자이너 컨택 전까지도 할 일이 매우 많았는데, 그 중의 하나가 애플 로그인을 구현하는 것이었다.
팀원이 보내준 자료에 의하면 iOS 앱 출시에서 기각되는 사유 중 하나가 다른 소셜로그인은 있는데 애플로그인이 없어서라고 한다. 그래서 원래 계획에는 없었지만 애플 로그인을 개발하게 된 것이다.
사실 구글로그인을 몇 달 전에 프론트에 붙여 봤어서 애플 로그인도 크게 어려울까? 라는 생각이 들었다. 분명 관련 문서가 있을 것이고, js에서 하는 방법을 잘 찾기만 하면 될 터였다. 그래서 해야 할 일은 크게 두 가지다.
- 애플 로그인 버튼 만들기
- 애플 로그인 로직 개발하기
1번보다는 2번이 시간이 훨씬 많이 들 것으로 예상된다.
✅ 오늘의 운동 인증
'개발 일기장 > SWM Onestep' 카테고리의 다른 글
20241022 TIL: React Native에서 ios emulator에 앱 띄우기 [진행중] (4) | 2024.10.22 |
---|---|
20241020 TIL: React Native에서 애플 로그인하기 [진행중] (0) | 2024.10.21 |
20241015 TIL: React Native에서 Django로 end-to-end test 작성하기 [진행중] (3) | 2024.10.15 |
20241014 TIL: pytest에서 특정 함수 우회하기 [끝] (1) | 2024.10.14 |
20241012 TIL: pytest에서 특정 함수 우회하기 (1) | 2024.10.12 |