iOS SandBox

DG
4 min readJun 29, 2024

--

개념: iOS에서 각 애플리케이션이 독립된 환경에서 실행되도록 하는 보안 메커니즘.

목적: 애플리케이션 간의 격리를 통해 시스템의 안정성과 보안을 유지하고, 악성 코드가 시스템이나 다른 애플리케이션에 영향을 미치는 것을 방지.

  • 애플리케이션은 자신의 전용 디렉토리에서만 파일을 읽고 쓸 수 있음
  • 다른 애플리케이션의 데이터나 시스템 파일에 직접 접근할 수 없음

폴더 구조

Documents

  • 사용자 생성 콘텐츠 저장
  • iTunes를 통해 백업
  • ex) 텍스트 파일, 이미지 파일, 사용자 생성 데이터

Library

  • Application Support: 앱이 생성하고 사용하는 파일을 저장
  • Caches: 캐시 파일을 저장하며, 시스템이 필요 시 삭제
  • Preferences: 사용자 설정과 앱의 환경설정 파일을 저장

tmp

  • 일시적인 데이터를 저장
  • 시스템 재부팅 시나 애플리케이션이 종료될 때 삭제될 수 있음
  • ex) 다운로드 중간 파일, 임시 데이터

Sandbox의 디렉토리 접근 예제

// Documents 디렉토리 경로
if let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
print("Documents Directory: \(documentsDirectory)")
}

// Library 디렉토리 경로
if let libraryDirectory = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask).first {
print("Library Directory: \(libraryDirectory)")
}

// Caches 디렉토리 경로
if let cachesDirectory = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first {
print("Caches Directory: \(cachesDirectory)")
}

// Temporary 디렉토리 경로
let temporaryDirectory = FileManager.default.temporaryDirectory
print("Temporary Directory: \(temporaryDirectory)")

SandBox 내에서의 데이터 공유

App Group

동일한 개발자가 만든 애플리케이션들 간에 데이터를 공유하기 위한 방법

  • Xcode에서 프로젝트 설정의 “Capabilities” 탭에서 “App Groups”를 활성화합니다.
  • 공유할 App Group ID를 설정합니다.
  • 코드에서 공유 디렉토리에 접근

URL Scheme

  • URL Scheme을 사용하여 애플리케이션 간에 데이터를 주고받을 수 있습니다.

UIPasteboard

  • 클립보드를 사용하여 데이터를 복사하고 붙여넣기할 수 있습니다.

iCloud

  • 동일한 Apple ID로 로그인된 기기 간에 데이터를 동기화하여 공유할 수 있습니다

--

--

DG
DG

Written by DG

한국의 iOS 개발자이다. 강아지와 운동을 좋아함. github: https://github.com/donggyushin

No responses yet