iOS FCM 푸시 알림 — 동작 원리부터 권한 타이밍까지 컨트롤하기
·
SWIFT개발일지
서버에서 Silent Push 기능을 추가하기로 했어요. 물론 이전에도 해봤는데, 문서화를 안 했더니 기억이 하나도 안 나더라고요 😅 그래서 이번엔 제대로 정리해보기로 했습니다.먼저 설정부터1. APNs 인증 키 (.p8) 발급Apple Developer 콘솔에서 발급해요.Apple Developer → Certificates, Identifiers & Profiles→ Keys → + 버튼→ Apple Push Notifications service (APNs) 체크→ 다운로드 (한 번만 가능, 잘 보관).p8 파일과 함께 Key ID, Team ID를 메모해둬야 해요. Firebase 등록할 때 필요합니다2. Firebase 콘솔에 APNs 키 등록여기서 파이어베이스 콘솔에서 클라우드 메시징에 들어..
TCA Dependency는 어떻게 동작하는지 정확하게 설명할수 있는 사람
·
SWIFT개발일지
TCA로 개발하다가 모듈화를 시작했습니다.근데 바로 막혔어요.liveValue를 어느 모듈에 두지? App? Domain? Data?기존에는 App 모듈에 다 몰아넣고, App이 Data 레이어의 구현체까지 전부 알고 있었거든요. 근데 모듈을 나누니까 그게 안 되잖아요. LiveLoginRepository를 App이 직접 들고 있으면 모듈 분리가 의미가 없고, 그렇다고 Domain에 두자니 Domain이 구현체를 알면 안 되고....😅흠...근데..나 Dependency 뭐 어떻게 동작하는지 100% 남한테 설명할정도로 이해하고 있나?????-> 그래서 일단 모듈화는 잠깐 미뤄두고, Dependency 자체를 먼저 파보기로 했습니다.기존 방식들은 어떤 문제가 있었나TCA가 왜 이런 구조를 선택했는지 이..
Tuist를 공부해야하지 마음을 먹고 ABI부터 공부하기
·
iOS
최근 회사에서 모듈화를 진행하고 있습니다. 그런데 tuist도 제대로 모르면서 모듈화라뇨.. 신입인 저에겐 공부해야할게 산더미군요 기존 프로젝트는 레이어별 모듈화로 이루어져 있었습니다. App, Domain, Core, Util. 구조 자체는 깔끔해 보였어요. 그런데 프로젝트가 점점 커지면서 문제가 슬슬 보이기 시작했습니다. 빌드 속도가 말도 안되게 느려졌습니다.Home 화면 버튼 하나를 수정했을 뿐인데, Domain 220개 파일과 Core 154개 파일이 전부 다시 컴파일되는 거예요. 레이어별 모듈화의 구조적 문제입니다. 한 레이어의 어느 파일이 바뀌면, 그 레이어에 의존하는 모든 것이 다시 컴파일되어야 합니다. 주변의 도움도 받고 그러다보니 자연스럽게 이런 이야기가 나오기 시작했습니다."이제 Fe..
Swift 6 Concurrency Q&A 정리: isolation부터 Sendable까지
·
iOS
오랜만에 글 쓰네요 날씨가 따듯해지면서 오늘은 좋은 카페에 와서 글을 써요 오늘의 카페 추천은합정에 있는 콤파일입니다.어두컴컴하고 아주 제 취향이더라고요. (주말 2시간 컷은 너무하긴하네요)암튼 오늘은 오랜만에 swift에 대해 재밌는 Q&A 영상 올라와서 정리해보려고요:)Apple 엔지니어들이 직접 나와서 Swift Concurrency 관련 질문들에 답해주는 영상인데, 실제로 헷갈렸던 것들이 꽤 많이 해소됐어요. Swift 6로 넘어오면서 data race 검사가 빡세지면서 경고 폭탄을 맞은 분들도 많을 것 같아서, 제가 정리한 내용 같이 공유해봐요 :)isolation 이란?Swift Concurrency에서 가장 먼저 이해해야 할 개념이 있어요. 바로 isolation입니다.isolation(격리..
SwiftUI TabView 오버레이가 iOS 26에서 안 맞는 이유
·
SWIFT개발일지
iOS 18의 전체 뷰 트리를 그리면 다음과 같습니다.iOS 26에서 Liquid Glass가 도입되면서, 한 가지 궁금증이 생겼습니다.“SwiftUI의 TabView는 여전히 UITabBarController를 쓰고 있을까?”공식문서를 찾았지만 나와있지 않아 LLDB로 직접 확인했습니다!!문제의 시작: TabView 위에 터치 오버레이를 올리고 싶었다특정 탭을 눌렀을 때 실제 전환 대신 바텀 시트를 띄우고 싶었습니다.그래서 기존에는 이런 방식으로 처리했습니다:화면 너비 ÷ 탭 개수로 위치 계산투명 View를 올려 터치 가로채기탭 전환 대신 원하는 액션을 실행👉 iOS 18까지는 문제없이 동작 그런데 iOS 26에서는 완전히 깨졌어요이제 탭바는 화면 하단을 가득 채우지 않고, 중앙에 떠 있는 플로팅 형..
“이건 나중에 공부해야지”를 끝내고 싶어서 스킬을 만들었다
·
AI 라이브러리
미뤄두기만 하던 공부를, 아예 자동화해보기로 했다!회사 프로젝트를 개발하다 보면 꼭 한 번씩 제가 제대로 공부하지 못한 개념들을 만나게 됩니다.아직 제가 깊게 써보지 않은 WKWebView 나 Swift Concurrency, 비동기 처리 방식 같은 것들이 코드 안에 나타나고그럴 때 저는 보통 “아, 대충 이런 식으로 동작하겠구나” 하고 코드의 흐름만 추상적으로 파악한 채 넘어가는 경우가 많았죠 그 결과는 ㅠ.. 버그를 수정한 줄 알았는데 다른쪽에서 버그가 터지거나 아예 그 버그가 재현되는 경우로 이어졌어요신입의 방패는 한계가 있어요.. 여러분 이게 한두번 되면 윗 사람이 저에게 신뢰가 떨어지게 되죠.버그를 수정하라고 일줬는데 일을 만드는 거위가 되었으니 ㅎㅎ 혹시라도 해결했다 쳐도 결국 그 개념은 정..
신입이 직장에 들어간 3개월 - 첫번째 회고
·
인생회고
첫 회고의 시작사실 저는 회고를 자주 쓰는 사람은 아닙니다.. 네이버 부스트캠프에서 교육을 받을 때도, 애플 디벨로퍼 아카데미를 할때도 회고의 중요성은 정말 많이 들었어요실제로 매주 한 주를 돌아보며 정성스럽게 기록하는 러너분들도 많이 봤었죠. 그때마다 "와....대단하다"라는 생각은 했지만 막상 내가 쓰려하면...?낯간지러워서 못쓰겠더라고요... 여기는 개인 일기장이 아닌 모두가 볼 수 있는 곳이니? 하지만 제 인생의 첫 회고를 적으려 해요 바로 어느새 첫 직장에 취업을 하고 3개월이 된 지금 시점에!! 짧다면 짧은 3개월 난 그 사이에 많은 생각의 변화가 있었다고 당당히 말할 수 있기 때문입니다 절대 짧지 않았어요.어쩌면… 제가 발전한 속도보다 AI가 발전한 속도가 더 빨랐던 3개월이었을지도요. 😅..
로컬 알림 다국어 적용기: 언어가 바뀌어도 알림을 다시 등록하지 않아도 되는 이유
·
SWIFT개발일지
글로벌 앱을 개발하면서 알림 기능을 설계부터 구현까지 맡게 되었어요:) 어떻게 보면 첫 막중한 설계부터 책임감있는 일이 왔네요.이전의 FCM도 했지만 이번에는 Local 기반의 앱이기에 알림조차도 로컬기반으로 구현을 했어야 했죠출근하는 흔한 직장인의 로컬 알림...https://codeisfuture.tistory.com/159 푸시 알람을 어떻게 설계할까?토스 같은 금융 앱은 하루에 수백만 건의 알림을 보냅니다. 송금 완료, 카드 결제, 이벤트 참여, 마케팅까지.....만약 이걸 그냥 "생각날 때마다" 보낸다면? 사용자는 알림 폭격에 스트레스 받아서codeisfuture.tistory.com푸시 알림의 경우 이전의 글에서 더 자세히 다뤘기에 간단하게 생략할게요오늘은 로컬 알림을 구현하면서 겪은 사용자가..
왜 한번 빌드 이후부터는 빌드가 더 빠를까? - 증분 빌드
·
SWIFT개발일지
iOS 개발자라면 누구나 ⌘ + B를 누르고 Xcode가 프로젝트를 빌드하기를 가만히 기다려본 경험이 있을 겁니다. 그렇다면 Xcode에서 ⌘ + ⇧ + K 눌러본 적 있죠? 맞아요. Clean Build Folder입니다.이걸 누르면 빌드 결과물이 싹 지워지고, 다음 빌드는 사실상 처음부터 다시 빌드하게 돼요. 그럼 그 이후에 빌드하는 것은 뭐가 다를까요? 왜 처음 클린 빌드 이후에 하는것보다 훨씬 빠르게 진행이 될까요?? 그게 오늘 이야기할 증분 빌드입니다 😚증분 빌드란?증분 빌드는 아주 간단하게 말하면 이거예요.변경된 부분과, 그 변경으로 인해 영향을 받는 부분만 다시 빌드한다조금 더 풀어 쓰면:🔁 바뀐 코드만➕ 그 코드에 의존하는 코드만다시 컴파일❌ 나머지는 이전 빌드 결과 재사용그래서 대부분..