🔴 필요하게 된 상황Staccato 프로젝트는 Dev 서버와 Release 서버가 분리되어있다. 그래서 Config 파일을 Debug, Release로 각각 만들어 환경을 분리했다. 그러나 문제는 토큰이었다.Release 환경에서 생성한 토큰은 Debug 환경에서 작동하지 않는다.그런데 토큰은 UserDefaults에 저장되어있기 때문에 매번 앱을 삭제했다가 다시 빌드해야하는 번거로움이 있었다.(BundleID가 같기 때문에 UserDefaults가 남아있는 상태로 앱이 덮어씌워지기 때문에 삭제해야 함) 이 문제를 해결하기 위해, Bundle ID로 dev용 앱을 분리하기로 했다.그럼 아래 사진처럼 2개의 앱이 있게 된다. 🟢 구현 방법1. Scheme 추가Manage Schemes... -> +..
안녕하세요! 25년 8월 25일부터 Firebase의 Dynamic Links 서비스가 종료된다는 소식을 들었습니다(˘̩̩̩ㅅ˘̩ƪ) Firebase 대신 사용할 수 있는 무료 딥링크(다이나믹 링크) 서비스를 찾던 중, branch.io를 접하게 되었습니다.MAU가 10K 미만인 서비스는 무료로 딥링크 서비스 사용이 가능하다고 합니다. 0️⃣ 딥링크(Deep Link)와 다이나믹 링크(Dynamic Link)들어가기 전에, 딥링크와 다이나믹 링크의 차이점부터 짚어보도록 하겠습니다. 딥링크(Deep Link)앱 내 특정 위치로 이동시키는 URL 링크.예: myapp://product/123기존 앱 설치자만 사용 가능앱이 설치되어 있어야 동작함 다이나믹 링크(Dynamic Link)딥링크의 확장 개념으로..
1️⃣ 구현하려는 것같은 태그 버튼이 여러 번 재사용되고 있음.태그 버튼들은 모두 일정한 간격으로 떨어져 있고, 왼쪽 정렬이 되어 있음. (오른쪽 여백의 너비는 매번 달라짐)장소 검색 시 필터링을 위해 어떤 버튼이 선택 되었는지 알 수 있어야 함. 2️⃣ 생각한 방법2.1. 컬렉션뷰로 할까?컬렉션뷰로 구현한다면 데이터 파악과 UI 설정이 쉬울 것이라 생각했습니다.이유:인덱스 번호로 어떤 버튼이 선택되었는지 쉽게 알 수 있고버튼이 너비를 넘어갈 경우 컬렉션 뷰가 자동으로 2번째 줄로 넘겨주기 때문에2.2. 컬렉션뷰 기각!하지만 레이아웃을 매 아이템마다 다르게 업데이트 해줘야 하는 번거로움이 있었습니다.2.3. 스택뷰로 가자!위와 같은 이유로 스택뷰로 구현하게 되었습니다.→ 반복되는 코드를 줄이고 재사용하..
1️⃣ 정의 및 기본 구조▶︎ 정의⇒ 클래스의 인스턴스를 하나만 생성하여 전역적으로 사용하는 디자인 패턴▶︎ 기본 구조class MySingleton { // 1. static 키워드 사용하여 전역 인스턴스 생성 static let shared = MySingleton() // 2. 다른 곳에서 추가 인스턴스 생성 방지 private init() {} // 3. 기타 코드 작성 // 예시) let myName: String = "유림"}class Test { // 다른 클래스에서 MySingleton에 접근 가능함 //let mySingleton = MySingleton() //mySingleton.myName print(MySi..
📌 문제 : 세 번째 탭에서 탭바의 색이 회색으로 변함세 번째 탭에서 탭바가 회색으로 변하는 이유는 '스크롤 뷰'와 닿았기 때문이다.💡 tabBar.backgroundColor = .white 를 해도 회색으로 변하는 이유tabBar.backgroundColor = .white 만 설정할 경우, translucency와 backgroundImage의 영향을 받을 수 있기 때문.-Translucency: true일 경우, 배경색이 탭바 뒤 컨텐츠와 블렌드 됨.-BackgroundImage: transparency 또는 gradient effect가 적용된 default background image가 시스템에 의해 적용됨 💡 해결 : UITabBarAppearance 설정let appearance ..
-> scaleAspectFill 특인 것으로 사료됨.....-> scaleToFill이나 scaleAspectFit을 적절히 사용하자.....