「 IOS 」
November 17, 2019
Words count
2.5k
Reading time
2 mins.
2019년 가을, iOS13이 공개되었습니다. iOS13에는 많은 변화가 있었고 앱 개발자들은 iOS13에 대응되는 앱을 출시할 때 다크모드에 대한 설정을 해야만 했습니다. 다크모드를 On하는 순간 기존 디자인들이 펑펑 신나게 터져나갔습니다.
그래서 아마 대부분의 서비스들은 plist의 UIUserInterfaceStyle
의 값을 Light
로 설정함으로써 강제로 다크모드를 사용하지 않는 방향으로 설정했을겁니다. ~항상 부족한 리소스~
But, ...
Read article
「 IOS 」
November 17, 2019
Words count
4.6k
Reading time
4 mins.
UIWebView가 deprecated된 이후 웹 페이지를 렌더링 하는데 선택지는 WKWebView만이 남았습니다.
WKWebView는 UIWebView보다 높은 성능을 자랑하지만, 잘못된 설계? 로 인해 쉽게 메모리 누수가 발생할 수 있습니다. 물론 잘 사용한다면 메모리 누수 없이 사용할 수 있습니다.
WKWebView를 사용하면서 쉽게 실수할 수 있는 부분을 소개하고 어떻게 해결할 수 있을지 소개합니다.
구글에 WKWebView Memory leak...
Read article
「 IOS 」
October 06, 2019
Words count
5.5k
Reading time
5 mins.
iOS앱을 개발하면서 서버와 통신을 통해 데이터를 가져오는 작업을 하게 됩니다. API 명세에서 response body도 중요하지만 status code도 주의 깊게 살펴봐야 합니다.
status code를 잘못 사용하면, 앱 삭제후 재설치
등 사용자 경험에 치명적인 이슈가 발생할 수 있습니다.
http에 대한 설명은 위키백과를 참고해주세요. HTTP에 대한 이해 link
http프로토콜은 위 백과의 내용을 보시면 굉장히 양이 많고 복잡함을 알 ...
Read article
「 IOS 」
March 31, 2019
Words count
4.8k
Reading time
4 mins.
앱에 신규 기능을 추가하다 보면 Database(SQLite3) 스키마에 변경이 필요한 경우가 생깁니다. 예를 들면, 현재 토이 프로젝트 “퇴근요정” 은 아래와 같은 테이블을 갖고 있습니다.
각 근무시간의 PK인 id, 근무 시작시간 start, 근무 종료시간 end, 이렇게 3개의 column을 갖고 있습니다.
이번 v1.7 에서는 각 근무에 대한 특이사항 및 근무지 등 사용자가 다양하게 사용할 수 있도록 하기위해 메모
기능을 추가 예정입니...
Read article
「 IOS 」
February 09, 2019
Words count
3.1k
Reading time
3 mins.
앱을 개발하다보면 복잡한 View Hierachy를 만나게 됩니다. 거기에 Button, tableViewCell, CollectionViewCell 등 UserInteraction을 받는 View들이 겹치게 되면 기대와 달리 터치 이벤트를 받지 못하는 오류를 만날 수 있습니다.
이번 포스팅을 통해 iOS에서 Touch 이벤트가 Subview에게 전달되는 과정을 이해함으로써 좀 더 나은 앱을 만들 수 있었으면 합니다.
사용자 입장
당연한 이야기이지...
Read article
「 IOS 」
February 08, 2019
Words count
4.3k
Reading time
4 mins.
앱개발의 40% 정도는 View를 그리고 Layout을 구성하는데 있다고 생각합니다. 어떤 앱은 Frame기반 Layout을 사용하며 또 어떤 앱은 AutoLayout기반의 Layout을 이용합니다.
iOS11과 iPhoneX의 등장으로 사실상 AutoLayout은 선택이 아닌 필수가 되었습니다.
iPhoneX시리즈의 노치디자인에 대응하기 위해서는 Frame기반보다 AutoLayout기반이 더 효율적이기 때문입니다.
하지만 현실적으로 기존 Frame...
Read article
「 IOS 」
October 23, 2018
Words count
2.2k
Reading time
2 mins.
Operator는 Observable 객체를 구독할 때 넘어오는 event를 Filtering, Transforming, Combining 하기 위해 사용한다.
Observable을 구독할 때 event의 element를 그대로 사용할 수 없는 경우, 서비스에서 사용 가능한 객체로 변환하는 과정을 담당한다.
RxSwift에서는 구현에 필요한 다양한 개념들을 Operator로 미리 구현해 놓았으며 상황에 따라 적절한 Operator를 선택해 사용해...
Read article
「 IOS 」
October 13, 2018
Words count
5.7k
Reading time
5 mins.
Subject는 Observable과 Observer 두가지 역할을 한다. 즉, onNext() 메소드를 통해서 Event를 발생시키는 Observable의 역할과, subscribe 메소드를 통해 Event Sequence에서 Event를 구독하여 처리할 수 있는 Observer의 역할을 모두 수행할 수 있다.
RxSwift에서는 4가지 종류의 Subject를 지원한다.
- PublishSubject
- BehaviorSubject
- ReplySubject...
Read article
「 IOS 」
October 11, 2018
Words count
4.1k
Reading time
4 mins.
정의 : Observable Sequense와 함수형 operator를 이용한 이벤트 기반의 비동기 프로그래밍 라이브러리.
참고) iOS SDK에서 지원하는 비동기 프로그래밍
- NotificationCenter
- Delegate Pattern
- GCD (Grand Central Dispatch)
- Closure
Observable
DataType에 대한 변하지 않는 상태값의 이벤트를 만들어 전달 할 수 있는 능력(프로토콜)
실제 RxSwift 라이브러...
Read article
「 IOS 」
August 29, 2018
Words count
1.7k
Reading time
2 mins.
지금까지는 AdMob을 통해 광고 수익을 소소하게 벌고 있었는데요. 이번엔 인앱구매를 통해 수익모델을 붙여보려고 합니다.
보통 주로 무료앱에서는 광고 제거 버전을 인앱구매 상품으로 판매중입니다.
저도 한번 인앱구매로 광고제거 버전을 만들어 보려고 합니다.
지금까지 Push 등 앱에 특별한 기능을 추가하기 위해서는 애플 개발자 센터에서 옵션 설정을 해왔습니다.
인앱구매도 마찬가지로 애플 개발자 센터에서 인앱구매 기능을 사용하겠다고 설정해야합니다.
...
Read article
「 IOS 」
August 28, 2018
Words count
5.2k
Reading time
5 mins.
UITableViewDelegate를 구현하다 => UITableView에서 필요한 기능을 대신 구현하다
라는 느낌으로 AppDelegate는 App( Application ) 이 해야할 일을 대신 구현한다는 의미입니다.
여기에서 App이 해야할 일이란, Background 진입, Foreground 진입, 외부에서의 요청 (apns) 등을 말합니다.
@UIApplicationMain 은 뭘까요?
@UIApplicationMain
class ...
Read article
「 IOS 」
July 07, 2018
Words count
3.2k
Reading time
3 mins.
iOS11.3을 사용하고 있는 iPhone7 에서의 Widget 화면입니다. 앱 서비스 특징에 따라 위젯이 있으면 편리한 경우가 있습니다.
이번에 세번째로 52시간 근무시간 제도 시행에 맞춰 근무 시간을 체크할 수 있는 퇴근요정
앱을 배포했는데요.
다음 버전에서는 위젯도 제공하면 좋을 것 같아 공부도 할 겸 포스팅을 진행합니다.
위젯을 개발할 앱 프로젝트를 XCode에서 Open합니다.
File > New > Target 을 클...
Read article
「 IOS 」
July 03, 2018
Words count
5k
Reading time
5 mins.
Serverless한 앱을 주로 만들면 데이터를 로컬에 저장하게 되는데, 주로 UserDefault를 사용합니다. 데이터가 단순하고 양이 많지 않다면 상관없지만 CRUD 횟수가 많고 데이터 양이 많다면
Database 를 사용하는게 바람직합니다.
iOS Swift4환경에서 Sqlite3를 이용해서 데이터 CRUD를 구현하는 과정을 설명합니다.
import UIKit
import SQLite3
class WorkingTimeDBManager: NSObject...
Read article
「 IOS 」
May 29, 2018
Words count
6.5k
Reading time
6 mins.
iOS에서 Push 기능을 사용하기 위해서 Push Certificate, 푸시 인증서가 필요합니다. 푸시 인증서를 발급받는 방법은 개발 인증서 발급과정과 비슷합니다.
Apple Developers
애플 개발자센터에 로그인합니다.
+
버튼을 눌러줍니다.
개발용 인증서 발급페이지와 동일합니다. 빨간색으로 표시한 부분이 Push 인증서입니다.
개발용 인증서와 마찬가지로 Development(개발용)와 Production(앱스토어용) 으로 분리되어 있으...
Read article
「 IOS 」
May 21, 2018
Words count
1.2k
Reading time
1 mins.
- 비율 무시! 귀여운 고양이가 옆으로 퍼져버렸습니다.
- ImageView의 Width와 height에 이미지를 늘리고 우겨넣습니다.
- 디자인 가이드로 정해진 레이아웃과 이미지가 아니면 이렇게 이미지를 괴롭히면 안돼요.
- 비율 유지! 원본의 비율을 그대로 유지합니다.
- 이미지는
절대
ImageView 밖으로 나가지 않습니다.
- ImageView 내부에서 밖으로 나가지 않는 선에서 최대치의 값을 갖습니다.
- 비율이 맞지 않는경우 내부에
여백
이 생기게...
Read article
「 IOS 」
May 19, 2018
Words count
10k
Reading time
9 mins.
새로운 버전의 앱이 출시되면 AppStore에 등록되고, 설정 -> Apple ID -> iTunes 및 App Store -> 자동 다운로드(업데이트)
가 켜져있다면 보통 새벽시간에 자동 업데이트가 됩니다.
하지만 사용자가 자동 업데이트 기능을 꺼두었다면?
새로운 앱 버전의 출시를 알 수 없습니다.
가장 큰 문제는, 기존 배포버전에 치명적인 버그가 있을때 Hot-fix 배포를 하더라도 자동업데이트 옵션 미사용 사용자들에게는 새로...
Read article
「 IOS 」
May 17, 2018
Words count
5.6k
Reading time
5 mins.
iOS앱을 만들어서 많은 사용자를 보유하려면 사용자가 어떤 기능을 좋아하는지(얼마나 많이 사용하는지), 사용하지 않는 기능은 무엇인지(사용률이 적은 기능)이 무엇인지 알고 계속 개선해 나가야 합니다. 하지만 iOS앱은 AppStore에 업로드하면 개발자의 손을 떠나게 됩니다.
그렇다면 사람들이 어떤 기능을 자주 쓰는지, 필요로 하는지 어떻게 수집을 할까요?
지표 수집
툴을 사용합니다. 대표적으로는 Google Analytics가 있습니다. 그 외에...
Read article
「 IOS 」
May 14, 2018
Words count
3.2k
Reading time
3 mins.
Firebase Remote Config란, 앱 업데이트를 게시하지 않고도 앱의 동작과 모양을 변경할 수 있도록 도와주는 서비스입니다. 앱의 실행시점에 서버에서 Config를 읽어오는 비교적 쉬운 개념이지만. 이를 활용해서 다양한 응용동작을 할 수 있습니다.
비슷한 서비스로는 NHN Entertainment의 Toast Cloud - Launching이 있습니다.
- 최신 업데이트 버전을 가져와 현재 설치된 버전과 비교하여 업데이트를 유도할 수 ...
Read article