분류 전체보기

    [iOS] SnapKit

    짧은 코드로 autolayout을 표현할 수 있도록 도와주는 프레임워크 https://github.com/SnapKit/SnapKit GitHub - SnapKit/SnapKit: A Swift Autolayout DSL for iOS & OS X A Swift Autolayout DSL for iOS & OS X. Contribute to SnapKit/SnapKit development by creating an account on GitHub. github.com 코드베이스로 UI를 구현하고 오토레이아웃으로 구현할 때 편리하다. 오토레이아웃 let view = UIView() let square = UIView() square.backgroundColor = .blue square.frame = C..

    Firebase(iOS) - Firebase Cloud Messaging(Remote Notification)

    iOS에서 *Remote Notification을 사용하기 위해 *APNs와 연결되는 서버가 필요하다. * APNs와 Remote Notification - https://clamp-coding.tistory.com/414 FCM(Firebase Cloud Messaging) APNs의 보안요건을 직접 구축하기 힘들때 쉽게 원격 알림을 보낼 수 있게 해주는 FCM이다. Remote Notification을 손쉽게 관리하고. 전송할 수 있게 도와주는 Firebase의 플랫폼이다. 원격 알림 메시지 전송기능: 사용자에게 표시되는 알림메시지를 실시간 또는 예약 전송 기능 다양한 메시지 타겟팅기능: 단일 기기, 기기 그룹, 주제를 구독한 기기에 알림을 전송하는 기능. 발송 메시지 저장, 관리기능: 알림 내용, ..

    [iOS] Push Notification(1). Remote Notification , APNs

    Push의 종류 로컬 푸시(Local Notification): 앱으로부터 push를 앱에 띄우는 것 => https://clamp-coding.tistory.com/43 서버 푸시(Remote Notification): 서버로부터 push를 앱에 띄우는것. Remote Notification을 사용하는 상황? VIP를 선별하여 쿠폰을 발급하고 싶다. 내가 팔로우하는 사용자가 나를 태그했을 때 확인해 보라는 알람을 보내고 싶다. 불특정 시간, 불특정 인원, 불특정 장소에 상황에 맞게 알람을 보내고싶다. Local에서 사용하는 장소, 시간, 간격에 맞춰 알람을 보내고싶은게 아닌, 특정 상황에 특정 타겟에게 알람을 보내고 싶을 때 필요한 Notification이다. Remote Notification 전송 ..

    [Swift] - UUID 랜덤 고유값 문자 생성

    UUID는 Universally Unique Identifier의 약자이다. 총 36개의 문자열로 구성되어 있고, 이 문자는 32개의 실제 문자(숫자 또는 알파벳)과 4개의 하이픈으로 구성되어있다. (8개의 문자) - (4개의 문자) - (4개의 문자) - (4개의 문자) - (12개의 문자) UUID의 특징 앱을 재실행 시켜도 값은 유지된다. 앱의 공급 업체가 같을 경우, UUID 값도 동일하다. 개인적인 의견으로는, 연동성이 좋다고 생각된다. 만약 A라는 회사가 SNS 어플리케이션을 만들고 추후에 채팅 어플리케이션을 제작했을 때, 유저가 보유한 고유한 UUID 값을 통해 해당 어플리케이션들의 연동이 가능하기 때문이다. 앱을 삭제해도 공급 업체가 제공한 다른 앱이 남아있는 경우, UUID 값은 유지된다..

    [IOS] - UIWindow

    iOS 개발에서 UIWindow는 사용자 인터페이스의 필수 구성요소이다. 모든 뷰와 컨트롤이 표시되는 창이다. UIView는 뷰 관리 및 표시, 터치 이벤트 처리 및 애플리케이션의 전체적인 모양 관리를 담당한다. UIWindow란 UIWindow는 UIView의 하위 클래스이며, iOS 애플리케이션의 View를 관리하고 표시하는 역할을 한다. UIWindow는 View들을 담는 컨테이너며 Event를 전달해주는 매개체이다. iOS앱은 콘텐츠를 화면에 보여주기위해 최소 1개 이상의 윈도우를 가지고 있다(보통1개) 애플리케이션이 시작될 때 시스템에 의해 자동으로 생성되며 앱의 첫 번째 뷰 컨트롤러 표시를 담당한다. UIWindow의 역할 UIWindow객체는 iOS앱의 사용자 인터페이스를 관리하는데 중요한 ..

    [iOS] App Bundle: 앱 개발의 핵심 구성 요소

    App Bundle iOS앱은 코드, 이미지, 사운드와 같이 앱이 작동하는데 필요한 많은 파일로 구성된다. 이러한 모든 파일은 App Bundle이라는 단일 패키지로 결합된다. App Bundle을 여행에 필요한 모든 것이 들어있는 여행 가방이라고 생각하면 된다. 옷, 신발, 세면도구를 여행가방에 담는 것처럼 개발자는 앱에 필요한 모든 파일을 App Bundle에 담는다. App Bundle에는 각 파일 유형에 대한 특정 구조와 위치가 있으므로 운영체제가 앱을 실행하는데 필요한 항목을 쉽게 찾을 수 있다. App Bundle은 앱을 실행하는 코드가 포함되어있다. 이 코드는 컴파일되어 사용자 입력 처리와, 화면 정보 표시에 이르기까지 앱의 모든 기능을 처리한다. 코드 이외에도 이미지, 사운드, 비디오 같이..

    [Swift] 확장(extension)

    확장 기존 클래스, 구조체, 열거형 타입에 새로운 Property, Method, Initializer등을 추가하는 것으로, 원본(소스코드)에 접근하지 못하는 타입들도 확장해서 사용할 수 있다. extension이란 키워드를 사용하여 확장한다. 상속은 기존 클래스, 구조체, 열거형 타입을 받아 추가적으로 작성하는 수직형 확장이라면, 확장은 기존 클래스, 구조체, 열거형 타입 자체에 Property, Method, Initializer를 추가하는 수평형 확장. 상속은 저장프로퍼티를 추가 확장은 메서드를 추가 타입을 확장하는 문법. extension SomeType{ } extension SomeType: SomeProtocol, AnotuerProtocol{ } extension을 적고 확장하고자 하는 타..

    [iOS] - Drawing Cycle(Layout Cycle)

    iOS에서 메인 쓰레드는 1초에 60번 ~ 120번(기기의 Hz마다 다르다) 화면을 다시그린다. 무조건 60번, 120번을 다시 그리는 게아니라 필요한 경우! 화면을 다시그린다. 화면을 그리는 동안엔 아래와 같은 함수 호출 싸이클이 생긴다. updateConstraints() ➡️ layoutSubviews() ➡️ draw() updateConstraints (오토레이아웃이 업데이트 되야 할 때에만) 제약: 오토레이아웃을 업데이트 한다. 현재 기기의 화면 크기를 기준으로 제약을 업데이트한다. 동적인 오토레이아웃 변경이 일어날 경우 제약조건을 변경한다. 명시적으로 호출할 순 없다. 오토레이아웃으로 인한 제약이 확정되는 시기이다. // 테이블 뷰 셀 같은 컴포넌트 요소를 코드로 구성할 때 활용할 수 있다...

    [iOS] - 파일시스템(Document, Library, tmp...)

    iOS 파일시스템은 SandBox 구조를 띄고있다. Sanbox: 아이들에게 놀이터 모래사장 안에서만 돌 수 있도록하고, 나올 때는 흙을 털고 나오게하는 것처럼, 내부와 외부를 적절하게 분리시키는 구조라고 할 수 있다. iOS는 기본적으로 앱마다 별도의 파일을 생성하여 공유 되지 않도록 하고 외부러부터 들어온 접근에 대해 보호되는 영역으로 시스템이 부정적으로 조작되는 것을 막는 보안형태를 띄고있다. SandBox 구조의 예 A앱에서 문서를 작성하면 B앱에서 열 수 없다. A앱에서 B앱이라는 전달과정을 거쳐야만 해당 파일에 접근할 수 있다. 그렇기 때문에 옛날에는 특정 앱에서 만든 문서는 특정 앱에서만 볼 수 있었지만 지금은 Files앱을 통해 볼 수 있다. 만약 파일 시스템 구조가 SandBox구조가 아..

    [iOS] - 앱의 생명주기 App's Life Cycle (AppDelegate, SceneDelegate)

    앱의 생명주기란 App의 생명주기는 App의 실행/종료 및 App이 Foreground/Background 상태에 있을 때, 시스템이 발생시키는 event에 의해 App의 상태가 전환되는 일련의 과정을 뜻한다. App은 여러가지App이 한 번에 실행될 수 있고, 어떤App을 사용하다가 어떤 App을 사용할 수 있다. 그럼 App이 다른App으로 전환될 수 있고 백그라운드로 전환될 수 있다. 또는 App이 완전히 종료될 수 있다. 이런 시점에 운영체제가 자동으로 호출하는 메서드가 존재하며, 이러한 메서드 실행의 과정을 앱 라이프 사이클(App Life Cycle)이라고 부른다. 앱 라이프 사이클은 AppDelegate와 SceneDelegate에 의해 관리된다. Foreground/Background Fo..