- LanguageGuide
- Git
- 전달인자 레이블
- GOF
- Swift
- Apple
- Split View
- DiffableDataSource
- CollectionView
- TOSS
- github
- orthogonalScrollingBehavior
- iTerm
- iPad
- 앱개발
- lineBreakStrategy
- Keychain
- 야곰아카데미
- Human Interface Guidelines
- Accessibility
- lineBreakMode
- 스위프트
- 애플
- HIG
- 애플사이다
- UILabel
- 디자인패턴
- appstore
- WWDC
- IOS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Today
- Total
목록전체 글 (76)
애플사이다의 iOS 개발 일지

대부분 앱의 설정 화면에서 현재 설치된 버전 정보를 알 수 있다. 그리고 해당 앱의 최신버전이 나왔다면 업데이트 버튼을 탭했을 때, 사용자에게 AppStore 화면을 띄워준다. 덕분에 사용자가 AppStore에서 해당 앱을 직접 검색할 필요가 없다. 구글링을 통해 간단히 방법을 찾을 수 있었다. 검색 키워드 - ios how to link appstore Stack overflow > How to link to apps on the app store에서 시킨대로 했더니 잘 된다. @objc private func updateButtonTapped() { let appID = "1234" let appStoreURL = "itms-apps://itunes.apple.com/app/id\(appID)" gu..

김창준 저 를 읽었다. (도서 링크) 회사에서 자기 계발에 대해 얘기하다가 팀 리더의 추천으로 책을 읽게 되었다. 이 책에서 저자는 애자일의 핵심은 함께 자라기, 즉 ‘학습’과 ‘협동’이라고 말한다. 팀원들과 신뢰를 쌓고, 팀이 함께 학습하고 현업에 성공적으로 적용하기 위해 필요한 것들을 설명하며, 다양한 성공/실패 예시를 담고 있다. 먼저 한국인이라면 익숙할 여러 교육 철학을 저자가 정면으로 비판해서 웃겼다. 처음에 무조건 도인이 시키는 대로 따라 하다 보면 내공이 쌓이고, 결국 도인의 비법을 전수받아 득도한다는 유명한 이야기가 사실은 허무맹랑한 판타지이고, 이 메타포로 인해 많은 교육적 문제가 생겼고, 심지어 이 미명 하에서 교육적 폭력이 자행되어왔다는 내용이 있는데, 크게 공감이 갔고 동시에 씁쓸했..

UserDefaults 관련 코드를 보다가 UserDetaults.standard.string(forKey:) 메서드를 봤는데, object(forKey:) 메서드와의 차이점이 궁금해서 검색해봤다. UserDefaults, 기본적인 key-value pair와의 차이점에 대한 기본적인 설명은 생략했다. UserDefaults 관련 메서드는 이렇게 다양한데, 저장값을 string, bool, integer, double 등 타입별로 구분하면 번거로우니까 한 방에 퉁쳐서 저장할 수 있는 object를 쓰는 게 낫지 않을까? 하는 생각을 했다. -> 결론적으로 아니었음 공식문서 우선 공식문서를 살펴봤다. 대표적인 메서드인 object(forKey:) / bool(forKey:) / string(forKey:)..

주니어 개발자 면접을 보면서 이미지 처리에 대한 질문을 꽤 많이 받았다. 앱 출시 프로젝트 때는 서버에서 자체적으로 적당한 크기의 이미지를 저장하도록 수작업..했었기 때문에 대응이 어려웠다.. -> 현업에서도 이미지를 서버에서 일괄 관리하는 게 이상적이라고 한다. 즉, 서버가 특정 화면에 맞는 크기의 이미지를 미리 알아뒀다가 보내주는 방식이다. 클라이언트 단의 로직을 최소화할 수 있고, 서비스 운영 측면에서 보다 안정적이다. 현업에서는 대용량 이미지 처리, 특히 캐싱을 위해 Kingfisher 라이브러리를 쓴다고 한다. Kingfisher의 주요 기능은 URL을 넣으면 비동기로 이미지를 다운로드하고 캐싱 처리해주는 것이다. 이번 기회에 Kingfisher 소스코드를 뜯어보자. 공식문서로 Kingfishe..

앱이 Background 상태에 있더라도 사용자에게 알림을 띄우는 기능인 Push Notification에 대해 알아보자. *Notification의 디자인은 HIG 문서 요약본 포스트를 참고 이번 포스팅에서는 공식문서를 훑어보고, 다음 포스팅에서 Notification 관련 4가지 주체에 대해 정리하면서, 예제 코드를 작성해볼 계획이다. Push Notification이란? 특정 앱에서 사용자에게 알림을 띄우는 것을 말하는데, 아래 화면처럼 잠금 화면, 알림 센터, 배너, 사운드, 배지 등의 형태가 있다. 여기서 배지 (Badge)란 아래처럼 앱 우상단에 빨간 점으로 표시되는 형태이다. 참고 - What is a badge? APNs란? APNs는 Apple Push Notification servic..

APNs (Apple Push Notification service)를 스터디하다가 오랜만에 HIG 문서를 읽게 됐다. 참고 - Notifications HIG 문서 요약 Notification은 사용자에게 적당한 시간에 (timely), 중요한 정보를, 한눈에 (at a glance) 전달한다. 사용자에게 notification을 보내기 전에 반드시 사용자의 동의 (consent)를 얻어야 한다. 사용자가 동의한 이후, 대부분의 사용자는 설정 앱을 통해 notification 스타일과 notification의 중요도에 따른 알림 시간을 정한다. Anatomy 플랫폼에 따라 notification의 다양한 스타일을 활용할 수 있다. 배너 : 잠금 화면 (lock screen), 홈 화면, 데스크탑 배지 ..

개발자가 설정한 특정 상황이 발생하면 자동으로 실행할 동작을 미리 정해두는 기능이 있다. 예를 들어 특정 branch에 merge 또는 PR을 요청했을 때 테스트가 실행되도록 하는 것이다. Git Flow 기능과 함께 사용하면 더욱 유용하다. *Git Flow 설명은 지난 포스트 참고 - [Git] GitFlow로 브랜치 관리하기 이렇게 테스트 코드를 실행하거나, 새로운 버전을 release 하기 전에 TestFlight를 실행할 수 있는데 이러한 자동화 기능을 CI/CD라고 한다. CI/CD를 위한 툴은 Jenkins, fastlane, Buildkite 등 다양한데, 오늘은 GitHub Action을 알아보자. CI/CD란? CI : Continuous Integration (지속적 통합) CD :..

저번 포스팅 [Keychain] 공식문서 읽는 방법 - 공식문서만으로 키체인을 이해해보자 에서 Keychain 이론을 다뤘다. 이제 간단한 예제를 통해 Keychain을 사용해보자. *이 예제에서는 비밀번호를 저장하지만, 실제로는 사용자 인증 등 토큰을 저장하는 형태로 흔히 사용한다. 1. Keychain에 비밀번호 추가 (등록)하기 먼저 Keychain에 저장할 데이터 타입을 정의하자. 이번 예제에서는 password만 저장하지만, 다른 프로퍼티를 추가/저장하는 것도 가능하다. struct Credentials { // var username: String // 이번에는 필요 없음 var password: String } Keychain 관련 Error 타입도 정의하자. enum KeychainErro..