iOS
기본 정보
- 명칭: iOS
- 개발사: Apple
- 분류: 모바일 운영체제
- 주요 사용 기기: iPhone
- 주요 개발 언어: Swift, Objective-C
- 주요 개발 도구: Xcode
- 앱 배포 방식: App Store
- 관련 기술: Swift, Xcode, UIKit, SwiftUI, PWA
개요
iOS는 Apple이 개발한 모바일 운영체제이다.
주로 iPhone에서 사용되며, 보안성, 최적화, 앱 생태계, 사용자 경험이 강점이다.
iOS 앱은 일반적으로 Xcode를 사용해 개발하며, Swift 또는 Objective-C 언어를 사용한다.
웹 개발 관점에서는 iOS Safari, PWA, 모바일 반응형, 터치 이벤트, 홈 화면 추가 기능과도 관련이 깊다.
iOS 구조
사용자
↓
iPhone
↓
iOS
↓
앱
↓
하드웨어
앱 실행 구조
사용자 터치
↓
iOS 이벤트 처리
↓
앱 실행
↓
UI 렌더링
↓
화면 표시
주요 특징
- Apple 기기 전용 운영체제
- 높은 보안성
- 안정적인 앱 생태계
- App Store 기반 배포
- 하드웨어와 소프트웨어 최적화
- 터치 중심 UI
- Face ID, Touch ID 지원
- 푸시 알림 지원
- 위치, 카메라, 마이크 등 권한 관리
iOS 앱 개발 방식
iOS 앱 개발은 크게 두 가지 방식으로 나눌 수 있다.
| 방식 | 설명 |
|---|---|
| Native App | Swift, SwiftUI, UIKit으로 직접 개발 |
| Web App / PWA | HTML, CSS, JavaScript 기반으로 개발 |
Native App
Native App은 iOS 환경에 맞춰 직접 개발하는 앱이다.
주요 기술은 다음과 같다.
Swift 예제
import SwiftUI
struct ContentView: View {
var body: some View {
Text("Hello iOS")
.font(.title)
.padding()
}
}
SwiftUI
SwiftUI는 Apple의 선언형 UI 프레임워크이다.
데이터
↓
View
↓
상태 변경
↓
UI 자동 갱신
예시:
import SwiftUI
struct CounterView: View {
@State private var count = 0
var body: some View {
VStack {
Text("Count: \(count)")
Button("증가") {
count += 1
}
}
}
}
UIKit
UIKit은 오래전부터 사용된 iOS UI 프레임워크이다.
SwiftUI보다 코드가 길지만, 세밀한 제어가 가능하다.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel()
label.text = "Hello iOS"
label.textAlignment = .center
view.addSubview(label)
}
}
Xcode
Xcode는 Apple 공식 개발 도구이다.
주요 기능:
- iOS 앱 개발
- Swift 코드 작성
- 시뮬레이터 실행
- 디버깅
- 앱 서명
- App Store 배포
- Interface Builder 지원
iOS 앱 프로젝트 구조
MyApp/
├── MyAppApp.swift
├── ContentView.swift
├── Assets.xcassets
├── Info.plist
└── Preview Content/
Info.plist
Info.plist는 iOS 앱의 설정 파일이다.
예를 들어 카메라, 위치, 마이크 권한 설명 문구를 작성한다.
<key>NSCameraUsageDescription</key>
<string>프로필 사진 촬영을 위해 카메라 접근이 필요합니다.</string>
App Store 배포 과정
앱 개발
↓
테스트
↓
서명 설정
↓
Archive
↓
App Store Connect 업로드
↓
심사
↓
출시
iOS 권한 관리
iOS는 개인정보 보호를 중요하게 다룬다.
대표 권한:
| 권한 | 설명 |
|---|---|
| Camera | 카메라 접근 |
| Microphone | 마이크 접근 |
| Location | 위치 정보 |
| Photo Library | 사진 접근 |
| Contacts | 연락처 접근 |
| Push Notification | 푸시 알림 |
iOS와 Android 비교
| iOS | Android |
|---|---|
| Apple 기기 중심 | 다양한 제조사 |
| 폐쇄적인 생태계 | 비교적 개방적 |
| App Store 중심 | Google Play 중심 |
| 최적화 우수 | 기기 다양성 높음 |
| Swift 사용 | Kotlin, Java 사용 |
| 심사 기준 엄격 | 배포 유연성 높음 |
iOS와 PWA
iOS에서도 PWA를 사용할 수 있다.
PWA는 앱스토어를 거치지 않고 웹사이트를 홈 화면에 추가해서 앱처럼 사용하는 방식이다.
웹사이트
↓
Safari
↓
홈 화면에 추가
↓
앱처럼 실행
iOS PWA 기본 구성
PWA를 만들려면 보통 다음 파일이 필요하다.
프로젝트/
├── index.html
├── manifest.json
├── service-worker.js
└── icons/
iOS 홈 화면 아이콘
iOS에서는 다음 태그를 자주 사용한다.
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png">
iOS 전체 화면 웹앱 설정
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-title" content="My App">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
모바일 반응형 설정
iOS Safari에서 모바일 화면을 제대로 맞추려면 viewport 설정이 중요하다.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
게임처럼 확대/축소를 막고 싶을 때는 다음처럼 사용하기도 한다.
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
단, 접근성 측면에서는 확대 제한을 신중하게 사용해야 한다.
iOS Safari 주의사항
웹 개발 시 iOS Safari는 다음 부분을 주의해야 한다.
- 주소창 높이에 따라 화면 크기 변화
100vh처리 이슈- 터치 이벤트 차이
- 자동 재생 제한
- 파일 업로드 제약
- PWA 캐시 정책 확인 필요
- 홈 화면 앱과 Safari 실행 환경 차이
- 일부 Web API 지원 차이
iOS에서 100vh 문제
모바일 Safari에서는 주소창 때문에 100vh가 예상과 다르게 보일 수 있다.
.app {
min-height: 100dvh;
}
dvh는 동적 viewport 높이를 기준으로 계산한다.
터치 이벤트
iOS 웹 게임에서는 마우스 이벤트보다 터치 이벤트 처리가 중요하다.
canvas.addEventListener("touchstart", function (event) {
event.preventDefault();
const touch = event.touches[0];
console.log(touch.clientX, touch.clientY);
}, { passive: false });
iOS에서 Canvas 사용
Canvas 게임을 iOS에서 실행할 때는 다음을 고려해야 한다.
- 화면 비율
- 터치 입력
- devicePixelRatio
- 스크롤 방지
- 주소창 높이
- 성능 최적화
- 이미지 리소스 크기
const dpr = Math.min(window.devicePixelRatio || 1, 2);
canvas.width = 420 * dpr;
canvas.height = 640 * dpr;
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
iOS 앱 개발 흐름
아이디어
↓
화면 설계
↓
Xcode 프로젝트 생성
↓
Swift / SwiftUI 개발
↓
시뮬레이터 테스트
↓
실기기 테스트
↓
App Store 배포
iOS 웹앱 개발 흐름
HTML
↓
CSS 반응형
↓
JavaScript 기능 구현
↓
PWA 설정
↓
iOS Safari 테스트
↓
홈 화면 추가 테스트
장점
- 기기 최적화가 뛰어남
- 보안성이 높음
- 사용자 경험이 일관적
- App Store 생태계가 안정적
- 고성능 앱 개발 가능
- SwiftUI로 빠른 UI 개발 가능
단점
- Apple 기기 필요
- App Store 심사 필요
- 개발 환경이 macOS 중심
- 배포 과정이 Android보다 까다로움
- 일부 웹 기능 지원이 제한적일 수 있음
대표 활용 분야
- 모바일 앱
- 게임 앱
- 쇼핑 앱
- 금융 앱
- 헬스케어 앱
- 교육 앱
- PWA
- 모바일 웹 서비스
- 카메라 기반 앱
- 위치 기반 앱
실무 메모
- iOS 앱 개발은 Xcode와 Swift 학습이 기본이다.
- 웹앱은 iOS Safari에서 반드시 직접 테스트해야 한다.
- 모바일 게임은 터치 이벤트와 화면 비율을 우선 확인한다.
- Canvas 사용 시 devicePixelRatio 처리를 고려한다.
- PWA는 iOS에서 Android와 동작 방식이 다를 수 있다.
- 홈 화면 아이콘은
apple-touch-icon을 따로 설정하는 것이 좋다. - 주소창 때문에
100vh대신100dvh를 검토한다. - 권한 요청 문구는 사용자에게 명확하게 작성해야 한다.
- App Store 배포 전 실기기 테스트가 중요하다.
- 이미지, 사운드, 영상 리소스는 모바일 성능을 고려해 최적화한다.
iOS와 함께 사용하는 기술
대표 활용 사례
- iPhone 앱 개발
- 모바일 게임 출시
- PWA 홈 화면 앱
- 쇼핑몰 모바일 최적화
- Canvas 기반 웹 게임
- 카메라 앱
- 위치 기반 서비스
- 푸시 알림 앱
- 음악 플레이어 앱
- 헬스케어 앱
관련 문서
출처
- Apple Developer
- Apple Developer Documentation
- Xcode Documentation