# iOS-Basic

15개의 포스트
post-thumbnail

[iOS] 사용자 알림(User Notifications) - (1) APNs - 3

🐸 이번 글에서는 APNs Provider Server의 신뢰 연결을 위한 Token-Based 관계 Certificated-Base 관계 를 구축하려면 어떤게 필요한지 정리하겠습니다. Certificate-Based 관계 (1)편에서 Apple Developer 계정에 들어가서 APNs를 항목을 보게되면 옆에 Configure라는게 있습니다. 그걸 클릭 하게 되면 이런 창이 뜨는데요. https://velog.velcdn.com/images/yoosa3004/post/0557319a-0db6-4369-8a43-5b10fb119429/image.png 음..APNs SSL 인증서..? App ID에 Push Notification을 구성하기 위해, Provider S

2023년 2월 27일
·
0개의 댓글
·

[iOS] 사용자 알림(User Notifications) - (1) APNs - 2

🐸 지난 글에서 APNs JSON Payload를 간단 정리하면서 끝났는데요, 심화 과정(?) 일 것 같은 category 키의 Action, 알림을 통해 받은 데이터를 가공하는 Extension 개념이 나왔습니다. 그 두가지는 이 글에서 정리하겠습니다. Declaring your actionable notification types 알림의 종류를 구분하고 알림 인터페이스에 action button을 추가할 수 있습니다. 개요 actionable한 알림은 사용자가 앱을 실행하지 않고도 알림에 응답할 수 있도록 하는 기능 입니다. 다른 알림은 인터페이스에 내용을 표기하지만, 할 수 있는 행동은 그냥 앱 실행 뿐 입니다. 하지만 actionable한 알림의 경우, 시스템은 알림 인터페이스 외에도 하나 이상의 버튼을 표시합니다. 버튼을 탭하면 선택한 액션을 앱으로 전송하고, 앱은 그것을 백그라운드에서 처리합니다. ![](https://velog.

2023년 2월 27일
·
0개의 댓글
·
post-thumbnail

[iOS] 사용자 알림(User Notifications) - (1) APNs - 1

🐸 안녕하세요 오늘은 2월 26일 일요일 주말.. 오늘은 iOS 사용자 알림(User Notifications), 개발자들이 많이 부르기로는 Push에 대해 한 판 정리를 해보려고 합니다. 푸쉬 하면 떠오르는 APNs, NotificationCenter, FCM 등등이 있죠? 다 같이 보겠습니다. iOS의 User Notifications Framework 앱 개발자는 사용자에게 다양한 알림을 보내고 싶어합니다. 주로 Alert, Sound, Badge, Silent 형식이 있는데요. 어떻게 보낼까요? 🤷🏼‍♀️ iOS 앱에서 사용자에게 알림을 보내는 방법은 2가지가 있습니다. 서버에서 Push 알림을 생성하여 보내는 것 앱 내에서 직접 알림을 생성하여 Push하는 것

2023년 2월 26일
·
0개의 댓글
·

[iOS] NSCache

🐸 회사의 프로젝트에서는 Kingfisher를 사용해서 이미지를 다운, 세팅해주고 있는데요. 최근에 Cell이 많은 부분에서 메모리 이슈가 발견되서 Kingfisher의 Cache 를 사용했습니다. 하지만 잘 몰라서 거의 예제를 복붙하는 수준으로 했는데... 그래서 오늘은 iOS에서 지원하는 NSCache 객체에 대해 알아보겠습니다. NSCache NSCache란? NSCache란 일시적인 key-value 쌍을 저장할 수 있는 가변적인(mutable) 컬렉션 입니다. 이 컬렉션에 저장된 데이터는 시스템 리소스가 부족할 때 삭제 될 수 있습니다. 따라서, NSCache를 사용하면 일시적으로 필요한 데이터를 메모리에 캐싱할 수 있으며, 필요 없어지면 시스템에 의해 자동으로 삭제될 수 있습니다. 이를 통해 앱 성능을 개선 할 수 있습니다.

2023년 2월 26일
·
0개의 댓글
·
post-thumbnail

[iOS] File System

🐸 최근에 회사에서 동영상을 다운로드해서 저장해주세요. 라는 요구사항을 받았는데, 생각해보니 iOS FileSystem에 대해 잘 모르는것 같아서 정리해보겠습니다. iOS File System Basics 개요 파일 시스템은 운영체제에서 제공하는 파일 시스템 구조로, 데이터 파일, 앱, 운영체제 파일 등을 저장하고 관리하는 역할을 합니다. 파일 시스템은 모든 프로세스에서 필요로 하며, 이를 통해 다양한 작업을 할 수 있습니다. 파일 시스템은 앱 및 운영체제의 성능 및 안정성을 유지하는데 매우 중요한 역할을

2023년 2월 24일
·
0개의 댓글
·
post-thumbnail

[iOS] CoreAnimation - 1

🐸 최근에 회사에서 UIButton안에 이미지를 빙글빙글 돌려달라는 요청이 있어서 애니메이션 작업을 했습니다. 이런...예. 이 CoreAnimation, Layer 관련된 작업은 그냥 스택오버플로우나 블로그 복붙만해서.. 공부해볼까 합니다. CoreAnimation이란? Core Animation은 앱을 느리게하거나 CPU에 부담을 주지않고 높은 프레임과 스뭇뜨한 애니메이션을 제공해주는 그래픽 렌더링 및 애니메이션 인프라 입니다. (드로잉 시스템 자체가 아닌 하드웨어에서 앱의 콘텐츠를 합성하고 조작하는 😈인프라 라는게 강조되네요) 애니메이션의 각 프레임을 그리는데 필요한 대부분의 작업은 자동으로 수행됩니다. 개발자가 할 일은 start나 end point같은 animation parameters를 지정해주는것 뿐입니다. CoreAnimation은 그 paramter를 기반으로 프레임을 그리고, **전용 그래픽 하드웨어로 전달하

2023년 2월 23일
·
0개의 댓글
·
post-thumbnail

[iOS] Background Mode, Background Task

🐸 오늘은 BackgroundMode와 BackgroundTask에 대해 정리해보겠습니다. 배경 iOS앱은 기본적으로 포그라운드, 즉 사용자가 앱을 열어 활성화한 경우에만 작동합니다. 하지만 사용자가 홈으로 나가거나 App Switcher로 앱을 전환하면 앱은 백그라운드 상태로 실행됩니다. iOS는 퍼포먼스의 이슈로 백그라운드에서 실행되는 앱의 시간을 제한합니다. 이 제한된 시간안에 작업을 수행하려면 BackgroundTask API를 사용하여 시간 제한을 늘릴 수 있습니다. 예를 들어 파일 다운로드, 데이터 동기화, 알림 처리, 위치 추적, 오디오 재생 등을 백그라운드에서 처리할 수 있습니다. (그래도 제한 시간이 지나면 강제로 종료 시킵니다.) 그리고! BackgroundTask를 구현하려면 XCode에서 Background Mode도 설정해주어야 합니다. Background Mode는 **iOS 앱이 백그라운드에서 실행 가능한 기능을 설정하는

2023년 2월 21일
·
0개의 댓글
·
post-thumbnail

[iOS] DeepLink, URIScheme, Universal Link, DynamicLink

🐸 일하면서 듣는 온갖 Link에 대한 정리 입니다. DeepLink 정의 딥링크란 A앱에서 B앱을 실행하거나, B앱의 특정 화면으로 이동할 수 있는 기능을 말합니다. 👩‍💻 예시) 카카오톡에서 카카오맵의 특정 위치 Link를 탭할 경우, 카카오맵이 켜지면서 바로 특정 위치 정보가 뜸 카카오맵이 깔려있지 않다면, 설치 유도 웹 / App Store로 이동 유형 딥링크에는 기본 딥링크와 디퍼드(deferred) 딥링크 두 가지가 있습니다. 기본형 앱이 설치된 경우에만 사용자를 앱으로 연결합니다. 앱이 설치되어있지 않은 경우 링크를 통해 앱의 최종 목적지에 도달할 수 없기 때문에 오류 메세지가 표기됩니다. 앱 마케터가 앱을 설치한 사용자를 찾아 이들이 앱을 다시 사용하게 만드는 리타겟팅 캠페인에서 유용하게 쓰입니다. 디퍼드(deferred) 사용자가 앱을 설치하지 않은 경우에는 사용자를 앱스토어로 안내한 다음, 원래 의도된

2023년 2월 20일
·
0개의 댓글
·

[iOS] AppDelegate 함수 한 판 정리

🐸 시리즈에서 App의 LifeCycle, AppDelegate에 대한 정리를 했는데요. 지금까지 정리했던 함수를 한 판 정리 해보겠습니다. AppDelegate 함수 1️⃣ 앱이 실행될 때 불리는 함수 👩‍💻 App의 Data Structure 초기화 one-time Setup 앱이 사용하는 중요한 서비스를 연결 (APNs, Kakao SDK, Firebase 등) 앱이 어떻게 launch되었는지 체크 (Push로 실행되었는지 체크하고, 그에 맞는 이벤트를 정의) 내부 캐시 정책 초기화 등. 2️⃣ Inactive 상태로 전환될 때 불리는 함수 launch -> Inactive background -> Inactive 👩‍💻 Foreground 상태에 들어갈 때 App의 Data 모델을 업데이트 합니다. Background에서 foreground로 전환될 때, 이 함수를 이용해서 네트워크로 부터 데이터를 fetch하고 disk로

2023년 2월 20일
·
0개의 댓글
·
post-thumbnail

[iOS] App의 실행 (App Life Cycle + App Structure)

🐸 iOS App의 5가지 State와 그와 관련된 AppDelegate 함수를 알아보았는데요, 이번에는 좀 더 전반적인 App의 실행 (App Life Cycle + App Structure)를 살펴보겠습니다. 앱의 실행과정 앱이 처음 launch되면 main 함수가 실행되어 UIApplication 객체 생성 nib 파일을 사용하거나 Info.plist 파일을 읽어들여 파일에 기록된 정보를 참고해 그 외에 필요한 데이터를 로드 App Delegate 객체를 만들고 UIApplcation 객체와 연결하고 App Main Loop를 만드는 등 실행에 필요한 준비를 한다. 실행을 앞두고 app Delegate에게 application:didFinishLaunchingWithOptions 메세지를 보낸다. App Structure ![](https://velog.velcdn.com/images/yoosa3004/post/3141fbcb-

2023년 2월 20일
·
0개의 댓글
·

[iOS] application(_:open:options:) AppDelegate의 Open URLs 이벤트 처리

🐸 App이 URL로 특정된 리소스를 열어야 할 때 AppDelegate에 수신되는 delegate 메소드에 대해 알아봅니다. 정의 url open할 URL 리소스. 이 리소스는 네트워크 리소스나 파일이 될 수 있습니다. Apple-registered URL Schemes에 대해 알아보려면, 참고하세요. 이 함수는 App의 launch time 때 불리는 위 함수들에서 false를 리턴하면 절대 불리지 않습니다. 만일 App이 Suspended 상태거나 background 실행 중에 URL이 도달한다면, 시스템은 이 메서드를 호출하기위해 App을 foreground 상태로 우선 올립니다. 이 delegation 메서드를 위한 notification은 없습니다. 그래서 어떤 내용이 들어가는지? 예시1) 앱의 특정 기능이 카카오 로그인을 요구한다고 가정할 때, 앱에서 카카오톡으로 이동한 후 사용자가 [동의하고 계속하기] 버튼 또는 로그인 취소버

2023년 2월 20일
·
0개의 댓글
·
post-thumbnail

[iOS] Preparing your UI to run in the background

🐸 저번 글에서는 App이 Inactive, Active 상태가 되며 불리는 delegate 함수에 대해 보았는데요, 이번엔 Preparing your UI to run in the background를 보겠습니다. 개요 앱은 수많은 이유로 Background 상태로 전환됩니다. 사용자가 foreground 앱을 종료시키면 앱은 UIKit이 suspend 되기전에 잠시 Background 상태가 됩니다. 시스템은 앱을 Background 상태로 direct하게 launch 하거나, Suspendend된 앱을 Background 상태로 이동시킵니다. 그리고 중요한 Task를 수행할 시간을 줍니다. 앱이 Background 상태가 될 때, 가능하면

2023년 2월 19일
·
0개의 댓글
·

[iOS] Preparing your UI to run in the foreground

🐸 저번 글에서는 앱이 launch되며 launchScreen이 뜨는 동안 AppDelegate에서 처리할 수 있는 작업에 대해 학습했는데요. 오늘은 그 다음 단계인 Preparing your UI to run in the foreground을 학습하겠습니다. 개요 UI를 화면에 나타내기 위해 foreground 전환을 사용합니다. foreground로의 앱 전환은 주로 유저 액션에 대한 응답입니다. 예를 들어, 유저가 앱의 아이콘을 터치했을 때 시스템은 앱을 시작하고 foreground로 전환시킵니다. 앱의 UI 업데이트, 리소스 요청, 유저의 요청을 핸들링하는 서비스의 시작을 위해 foreground로의 상태변환을 사용할 수 있습니다. UIKi

2023년 2월 19일
·
0개의 댓글
·

[iOS] Responding to the launch of App

🐸 지난번 App Life Cycle에 대해 정리했는데요. 이번 글에는 Responding to the launch of your app 을 학습해보겠습니다. App이 실행되고 LaunchScreen이 보이고, UI가 보이기 까지 App의 Data Structure을 초기화하고, App을 실행시킬 준비를 하고, 시스템을 통한 launch-time request에 응답하는 내용을 담고 있습니다. 개요 App이 launch되는 시점에 App의 Data Structure을 초기화하고, 실행할 App을 준비하고, system으로 부터의 request에 응답합니다. 사용자가 App의

2023년 2월 18일
·
0개의 댓글
·
post-thumbnail

[iOS] iOS App Life Cycle

🐸 iOS의 App Life Cycle에 대해 정리해보겠습니다. Managing your app’s life cycle Scene Support 버전은 일단 제하고, app-based life cycle만 정리하겠습니다! 개요 App의 현재 상태에 따라 수행할 수 있는 작업과 없는 작업이 결정됩니다. 예를 들어 foregorund 상태: CPU를 포함한 시스템 리소스 보다 우선 순위가 높다. background 상태: 가능한 적은 작업을 수행해야 하며, 화면 밖에 있기 때문에 아무 작업도 수행하지 않는 것이 좋다. App이 상태 변환을 하면 그에 따라 동작을 조정해야 합니다. App의 State가 변경되면 UIKit은 적절한 delegate 객체를 통해 개발자에게 알려줍니다

2023년 2월 18일
·
0개의 댓글
·