AboutContactRecruit
Our LAB

Column

E-FUSIONI COLUMN

iOS 앱 개발 기초

안녕하세요. iOS 앱 개발에 도전하고자 하는 분들에게 기초 지식과 Apple에서 권장하는 방법에 대해 간략히 소개해 드리고자 이 글을 작성 하게 되었습니다.


먼저 iOS 앱 개발을 시작하기 위해 필요한 기본 요소는 다음과 같습니다.


- 1. Apple 개발자 계정

iOS 앱 개발 및 배포를 위해 Apple 개발자 프로그램(Apple Developer Program) 가입이 필요합니다.

이를 통해 App Store에 앱을 출시할 수 있으며, 다양한 개발 도구와 리소스에 접근 할 수 있습니다.


연간 비용 99$(약 12만원)


- 2. Mac 컴퓨터

macOS가 설치된 Mac이 필수적입니다.

iOS 앱 개발은 Apple의 통합 개발 환경(IDE)인 Xcode를 사용하기 때문에 Mac 환경이 필요합니다.


- 3. Xcode

Xcode는 iOS, macOS, watchOS 및 tvOS 앱 개발에 필요한 모든 기능을 제공하는 Apple의 무료 IDE입니다.

코드 편집기, UI 디자인 도구, 시뮬레이터, 디버거 등을 포함합니다.


- 최소 iOS 13 버전 앱 개발을 위한 Xcode 요구 사항

iOS 13을 지원하는 앱을 개발하려면 최소 Xcode 11 이상이 필요합니다.

최신 버전의 macOS가 설치된 Mac에서 Xcode의 최신 버전을 사용하는 것이 권장됩니다.


Apple은 매년 WWDC(세계 개발자 회의)를 통해 새로운 Apple OS(iOS, tvOS 등)를 발표하며, 이에 따라 Xcode 등의 개발 도구 버전도 지속적으로 업데이트됩니다.


현재 최신 버전은 iOS 18이며, Xcode는 16.1입니다. 본 글에서 언급된 Xcode 버전(15.0)은 작성 시점 기준이므로, 최신 버전과 약간의 차이가 있을 수 있음을 양해 부탁드립니다.

프로젝트 생성

프로젝트 생성 이미지

프로젝트 생성 이미지

기본 App으로 샘플앱을 생성 할 것 이며, organization identifier은 JAVA의 package처럼 본인 사이트의 도메인을 거꾸로 쓰는게 암묵적인 룰 입니다. 개발언어는 swift와 objectvice-c 있으며 둘다 혼합해서도 사용 가능합니다. 하지만 장기적으로 보면 Swift로 개발하는 것이 Xcode에서 쉽게 접근되며, Apple에서 해당 언어에 집중하고 있고, 매년 개선사항이 나오고 있기에 더 나은 선택이 될 수 있습니다.

프로젝트 생성 이미지

프로젝트 생성 이미지

처음 프로젝트를 생성하면 위 이미지와 같습니다.



- Delegate

특정 이벤트 처리를 다른 객체에 위임하는 패턴에 사용됩니다.


- StoryBoard(이미지의 Main, LaunchScreen)

UI를 시각적으로 구성하고 화면 간의 전환을 관리하는 도구 입니다.


- Controller

UI와 데이터를 연결하고 앱의 동작을 제어하는 역할입니다.


- SceneDelegate

iOS13에서 처음 도입되었으며, 앱의 UI 수명 주기(백그라운드 로 전환될 떄, 활성전환 될 때 등)를 관리합니다.



샘플앱은 iPhone에서만 제공할 것이라 지원 기기를 iPhone만 남겨두고 삭제 합니다. 최소 실행가능한 iOS버전도 세팅 가능하며, 앱의 이름, 현재버전, 가로모드 등을 지원할지도 설정 가능합니다.


대략 설정한 내용이 이하 이미지 입니다.

프로젝트 생성 이미지

프로젝트 생성 이미지

프로젝트 생성 이미지

프로젝트 생성 이미지

Assets에서는 앱에서 사용될 이미지를 담아둘 수 있습니다. 앱의 아이콘의 경우는 Single사이즈(1024x1024)로 설정할 수 있으나, 권장하지 않으며 각 필요에 맞게 여러 사이즈를 필요로 합니다.

LaunchScreen 설정




iOS 앱 개발 시 LaunchScreen에 대한 주요 가이드라인은 다음과 같습니다


1. 앱의 첫 화면과 거의 동일하게 디자인하세요. LaunchScreen과 첫 화면 사이에 불편한 깜박임을 방지할 수 있습니다.


2. 정적 이미지를 사용하지 마세요. 스토리보드를 사용하여 다양한 화면 크기에 적응할 수 있도록 하세요.


3. 텍스트를 포함하지 마세요. LaunchScreen은 정적이므로 텍스트가 지역화되지 않습니다.


4. 광고나 브랜딩 요소를 넣지 마세요. LaunchScreen은 브랜딩 기회가 아닙니다.


5. 단순하고 빠르게 로드되도록 디자인하세요. 앱이 즉시 시작되는 것처럼 보이게 하는 것이 목표입니다


6. 다크 모드를 지원하도록 LaunchScreen을 설계하세요.


7. 스토리보드 사용을 권장하지만, 필요한 경우 정적 이미지 세트를 제공할 수 있습니다.


8. 텍스트를 포함하지 마세요. LaunchScreen은 정적이므로 텍스트가 지역화되지 않습니다.


이러한 가이드라인을 따르면 사용자에게 앱이 빠르고 반응성이 좋다는 인상을 줄 수 있습니다. StoryBoard에서 이미지를 설정 하는 방법은 이하 이미지와 같습니다.

StoryBoard에서 이미지를 설정 이미지1

StoryBoard에서 이미지를 설정 이미지1

StoryBoard에서 이미지를 설정 이미지2

StoryBoard에서 이미지를 설정 이미지2

StoryBoard에서 이미지를 설정 이미지3

StoryBoard에서 이미지를 설정 이미지3

SafeArea는 콘텐츠가 시스템 UI나 디바이스 특성에 의해 가려지지 않도록 보장하는 화면의 영역이며 이미지의 제약조건 창을 통해서 중앙 맞춤 등을 설정할 수 있습니다.

앱 화면의 구성



샘플앱에서는 버튼을 6개 두고, 회사 사이트, 인트라, 각 포털사이트 3개와 Youtube를 띄우는 앱 동작을 해보겠습니다.


먼저 Assets에 각 포털 사이트에 쓰일 버튼의 이미지를 넣고, Main StoryBoard에 Button을 생성합니다.

Assets에 버튼 이미지를 삽입

Assets에 버튼 이미지를 삽입

그 다음 ViewController를 Xcode에서 새창으로 띄운 뒤 컨트롤러 코드에서 StoryBoard의 UI요소 연결을 위해 new referencing outlet을 설정을 해줍니다. 이는 아래 이미지와 같이 Drag Drop 으로 가능합니다.

화면 구성 이미지

화면 구성 이미지

화면 구성 이미지

화면 구성 이미지

먼저 작업할 내용은 회사 사이트 및 인트라 사이트를 띄우는 작업을 설명하겠습니다. 보통 앱에서 외부 도메인을 호출 할 때에는 In-App Safari를 사용하기를 Apple에서 권장하고 있습니다.



- 안전성

사용자는 Safari의 쿠키 및 데이터가 유지되는 동일한 세션에서 로그인된 상태로 웹 페이지를 볼 수 있습니다.


- 보안성

SFSafariViewController는 앱과는 독립적으로 작동하므로 민감한 데이터나 웹 콘텐츠를 다룰 때 보안이 강화됩니다.


- 일관된 사용자 경험

Safari와 동일한 기능(예: Safari 설정, 자동 입력, 저장된 비밀번호 등)을 지원하여 사용자가 이미 익숙한 UI와 환경을 제공합니다.

버튼 동작 코드 작성



버튼 동작에 사용된 코드는 다음과 같습니다.

버튼 동작 코드 이미지

버튼 동작 코드 이미지

다른 버튼 4개는 앱을 호출을 실행해보고 없으면 in-app-safari 를 호출하게 동작하려고 합니다. iOS앱에서 타 앱을 호출 하기 위해서는 WhiteList로 관리 되기에 LSApplicationQueriesSchemes 항목을 추가한 뒤 해당 앱의 스키마들을 찾아 info.plist에 추가해 줍니다. Ex) daumapps, naversearchapp, google, youtube 사용된 코드는 다음과 같습니다.

버튼 동작 코드 이미지

버튼 동작 코드 이미지

인증서 신뢰 설정

인증서 신뢰 설정

마지막으로 앱스토어에 올라가지 않은 앱을 폰에서 실행하기 위해서는 개발자앱 인증서를 신뢰 해주어야 합니다. 설정 -> 일반 -> VPN및 기기관리 -> 앱 선택 -> 신뢰 마지막으로 앱 실행 동작을 보여주며 마치겠습니다.

어플 실행 비디오

어플 실행 비디오

지금까지 iOS 앱의 아주 기초적인 동작만을 살펴보았지만, 앱 개발을 시작하는 것은 분명 도전적인 과정입니다. 처음에는 새로운 개념들과 복잡한 구조들이 낯설게 느껴질 수 있습니다. 하지만 좋은 아이디어를 가지고 꾸준히 연습한다면, 이는 충분히 습득할 수 있는 기술입니다.


앱 개발 과정에서 가장 중요한 것은 사용자 경험을 최우선으로 고려하는 것입니다. 이를 위해 Apple에서는 다양한 가이드라인을 제공하고 있습니다.


- 디자인 요소 가이드 라인

앱의 완성도를 높이기 위한 디자인 지침을 제공합니다.

https://developer.apple.com/kr/design/human-interface-guidelines/layout


- App Store 심사 지침

앱 스토어에 앱을 출시하기 위한 심사 기준을 상세히 안내합니다.

https://developer.apple.com/kr/app-store/review/guidelines/


iOS 앱 개발의 여정을 시작하는 여러분을 진심으로 응원합니다. 초기의 어려움을 극복하고 성장해 나가는 과정에서 큰 성취감과 기쁨을 느끼실 수 있을 것입니다. 여러분의 창의적인 아이디어가 현실이 되는 그 날을 기대하며, 앱 개발의 흥미진진한 세계로 한 걸음 내딛어보세요!