| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
- ViewBuilder
- List
- swift #swift keychain #keychain 사용법
- 기존 앱
- url 추적
- 개발자 면접
- development language
- scrolling tab
- base64 변환
- pod install
- DataBinding
- notifychanged
- convert base64
- 스크롤 탭
- GeometryReader
- SwiftUI
- Swift Package Manager
- detect url
- 상단 탭바
- Tuist
- transformation.map
- Side Menu
- oberve url
- UIViewControllerTransitioningDelegate
- ios
- UIPresentationController
- swift
- DevelopmentRegion
- url 관찰
- Android
- Today
- Total
목록전체 글 (178)
버그 잡이
iOS 앱 내에서 웹뷰를 다루다 보면 "로그인 정보가 유지되지 않는다"거나 "다른 웹뷰와 세션 공유가 안 된다"는 문제에 직면합니다.쿠키를 공유하고 격리하는 방법에 대해서 알아보겠습니다. 1. 쿠키 공유와 격리 방법쿠키 공유의 핵심은 웹뷰의 데이터 저장소(DataStore)입니다. 1) 모든 웹뷰 간 쿠키 공유websiteDataStore로 .default() 저장소를 사용하면 웹뷰간 쿠키는 공유됩니다.같은 dataStore를 공유하기 때문입니다.영구 쿠키의 경우 앱의 디스크에 저장되어 앱을 껐다켜도 dataStore에 남아있습니다.let config = WKWebViewConfiguration()// [핵심] 기본 데이터 스토어 사용config.websiteDataStore = WKWebsiteDat..
앱 스킴을 통해 특정 페이지로 이동시키거나, 외부 웹뷰 URL을 전달받는 인터페이스를 설계할 때가 있습니다. 예를 들면 이런 형태죠.myapp://openURL?url=https://example.com/view?id=123&type=main하지만 이 URL을 URLComponents로 파싱해 보면, 우리가 기대한 https://... 전체가 아닌 앞부분만 가져오는 이슈가 발생하곤 합니다. 문제 상황: 왜 URLComponents는 원본을 못 가져올까?이유는 앰퍼샌드(&)와 물음표(?)의 중복 때문입니다.let schemeURL = "myapp://openURL?url=https://example.com/view?id=123&type=main"let components = URLComponents(str..
최신 Swift 환경에서 프로젝트를 진행하다 보면 동시성 경고를 해결하기 위해 프로토콜 채택 시 @preconcurrency를 사용하곤 합니다. 하지만 이 설정이 때로는 앱을 종료시키는 런타임 크래시의 원인이 되기도 합니다. 제가 직접 겪은 삽질기와 해결 방법을 공유합니다. 1. 문제 상황: 크래시 발생 코드와 현상외부 라이브러리(SDK)의 델리게이트를 채택할 때, 컴파일 경고를 없애기 위해 아래와 같이 작성했습니다. // 외부 라이브러리는 Swift Concurrency 대응이 되어 있지 않음// 프로토콜 채택 시 @preconcurrency를 붙여 경고를 해결하려 함extension MyViewController: @preconcurrency ExternalLibraryDelegate { ..
1. UINavigationController.isNavigationBarHidden이 속성은 UINavigationController 자체의 속성입니다. 네비게이션 컨트롤러가 관리하는 전체 인터페이스에서 바를 숨길지 결정합니다.네비게이션 스택에 쌓인 모든 뷰 컨트롤러에 영향을 줄 수 있는 '표준' 방식입니다.setNavigationBarHidden(_:animated:) 메서드를 통해 애니메이션 효과와 함께 바를 숨기거나 나타낼 수 있습니다. 화면 전환 시 바가 부드럽게 사라져야 할 때 필수적입니다. // 애니메이션 없이 즉시 숨기기self.navigationController?.isNavigationBarHidden = true// 애니메이션과 함께 숨기기 (추천)self.navigationContr..
블로그에 대한 단상 한동안 블로그에 글을 안 썼다. 자주는 아니더라도 일종의 루틴처럼 한두달에 1개의 글은 썼던 것 같은데 한동안 멈췄다.스스로에게 이런 핑계를 대면서.. '쓸만한 내용이 없어''요즘 다 gpt에게 물어보지 누가 블로그를 보니''요즘 새롭게 배운게 없는 것 같아''이미 있는 내용이야' 나의 핑계거리들을 돌이켜보면 소재가 없다는, 그 글이 효용이 없다는 것에 초점이 맞춰져 있다.돌이켜보면 나에게 블로그는 내용보다는 행위로써 중요했던 것 같다.글을 쓰면서 배웠던 내용들을 한번 더 정리하고 그 과정에서 부족한 부분들을 보충하는 그런 학습 행위였다.사실 내용은 다 어딘가 있는 내용들이고 나는 그걸 내가 소화한대로 적어서 내는 것이다.남들에게 효용을 얻을 것이 아니라 나의 행위 자체로써 효용을 얻..
기존의 앱 푸시는 FCM으로만 구현해봤었다.파이어베이스 공식 문서의 튜토리얼을 보면서 그냥 따라하는 것으로 연동을 쉽게 했었어서 APNs에 대해서 크게 알아보지 않고 넘어갔었다. 그러던 중 이번에 APNs 와 APNs Sanbox 라는 단어를 처음 듣게 되었다. 내가 이 부분 개념이 약한 것을 깨달았고 관련 개념을 정리해보고자 한다. APNS란 무엇인가?Apple Push Notification Service(APNS)는 Apple이 제공하는 클라우드 기반 푸시 알림 서비스입니다. 앱에서 사용자에게 실시간으로 알림을 전송할 수 있게 해주는 핵심 인프라입니다. APNS의 동작 원리앱 실행: iOS 앱이 시작될 때 시스템에 푸시 알림 권한 요청토큰 생성: APNS가 해당 기기와 앱에 고유한 Device T..
버그를 마주했을때 당황해서 삽질을 하는 경우가 많다.사소할 수 있지만 이런 삽질 기록들을 모아서 나만의 노하우를 쌓아가려고 한다. 문제 상황iOS 앱 배포시 암호화를 위하여 Xcode에 보안 모듈을 추가하여 사용하고 있는데 아래와 같은 에러가 발생했다. 'Syntax error near unexpected token '('"...linking-failed 삽질기1. 보안 모듈 라이센스가 문제가 있나 싶었다. 왜냐면 최근에 라이센스 문제로 동작하지 않았던 경험이 있었기 때문이다.그래서 라이센스를 갱신했다. 그러나 효과가 없었다. 2. 구글링을 해봤지만 마땅한 자료를 찾지 못했다.(나중에 알고 보니 너무 긴 로그로 검색했고, 핵심이 아닌 로그를 핵심 로그로 생각해서 검색했다. 원인이 아닌 현상이 되는 로그..
문제 상황아이폰 특정 기기에서 AVFoundation을 사용하요 QR 인식을 할때 카메라를 피사체에 가까지 가져가면 초점이 흐려지는 증상 원인 분석기기마다 최소초점거리(minimumFocusDistance)가 다르다.기본 카메라 기준으로 아이폰 13의 경우 최조 초점 거리가 150mm 이고아이폰 14 Pro는 200mm 이다.그 결과 같은 2cm*2cm QR 코드를 인식할때,아이폰 13은 200mm 거리에서도 피사체가 잘 인식되지만아이폰 14 Pro는 200mm 거리에서 피사체에 대한 초점이 흐려지는 것이었다. 해결방법AVFoundation에 있는 videoZoomFactor라는 값을 조정해서 카메라 zoom-in 정도를 조정할 수 있다.미니멈 최소초점거리를 정하고 그것을 넘어설때는 그 비율만큼 줌을..