UserDefaults & SharedPreference

0

Flutter SharedPreference와 iOS의 UserDefaults 차이

iOS의 UserDefaults와 Flutter의 SharedPreferences는 애플리케이션에서 작은 양의 영속적인 데이터를 저장하고 검색하는 데 사용되는 메커니즘입니다. 그러나 두 가지 간에는 중요한 차이점이 있습니다.

  1. 언어와 플랫폼:

    • iOS UserDefaults: 애플이 제공하는 기본 iOS 프레임워크로, iOS 및 macOS 애플리케이션에서 주로 Swift 또는 Objective-C 프로그래밍 언어로 사용됩니다.
    • Flutter SharedPreferences: Flutter 프레임워크용으로 개발된 플러그인으로, 플랫폼별 공유 설정에 액세스할 수 있는 API를 제공합니다. iOS를 포함한 다양한 플랫폼에서 공유 설정에 일관된 API를 사용할 수 있습니다.
  2. 데이터 저장:

    • iOS UserDefaults: 데이터를 저장하기 위해 계층적 데이터를 나타내는 구조화된 형식인 속성 목록(.plist)을 사용합니다. 데이터는 키-값 쌍으로 저장되며, 문자열, 숫자, 부울, 배열, 사전과 같은 다양한 데이터 유형을 지원합니다.
    • Flutter SharedPreferences: UserDefaults와 유사한 키-값 저장 시스템을 사용합니다. 그러나 하부 구현은 플랫폼에 따라 다를 수 있습니다. iOS에서는 UserDefaults와 마찬가지로 NSUserDefaults 클래스를 사용하여 데이터를 저장하지만, 플러터 친화적인 API를 제공합니다.
  3. 데이터 접근성:

    • iOS UserDefaults: UserDefaults 데이터는 앱별로 제한되며 동일한 앱 샌드박스 내에서 액세스할 수 있습니다. 사용자 환경 설정 및 앱에 특정한 작은 양의 데이터를 저장하기에 적합합니다.
    • Flutter SharedPreferences: SharedPreferences 데이터는 동일한 기기에서 여러 개의 플러터 앱에서 액세스할 수 있습니다. 다른 앱 간에 환경 설정을 공유하는 방법을 제공합니다. 그러나 SharedPreferences 데이터는 플러터 환경 외부에서 액세스할 수 없다는 점을 유의해야 합니다.
  4. API 및 사용법:

    • iOS UserDefaults: 키를 사용하여 값을 설정하고 검색하는 간단한 API를 제공합니다. standard 속성을 통해 UserDefaults에 직접 액세스하거나 별도의 도메인에 대한 사용자 정의 인스턴스를 생성할 수 있습니다.
    • Flutter SharedPreferences: 공유 설정에 액세스하기 위해 비동기 API를 제공합니다. SharedPreferences 클래스를 사용하여 키를 통해 값을 가져오고 설정할 수 있습니다.
  5. 타입 안정성:

    • iOS UserDefaults: UserDefaults는 정적으로 타입이 지정되어 있어 값을 검색할 때 적절한 유형으로 명시적으로 캐스팅해야 합니다.
    • Flutter SharedPreferences: SharedPreferences는 동적으로 타입이 결정되므로 플러터에서 dynamic 유형으로 값이 검색됩니다. 애플리케이션의 요구에 따라 값을 수동으로 캐스팅해야 합니다.

종합적으로, iOS UserDefaults와 Flutter SharedPreferences는 유사한 목적으로 사용되지만, 플랫폼 통합, 데이터 저장 형식, 접근성 및 API 사용법 등에서 차이가 있습니다.

UserDefaults는 info.plist파일에 저장하는가?

UserDefaults를 사용하여 저장된 데이터는 Info.plist 파일에 저장되지 않습니다. UserDefaults는 데이터를 저장하기 위해 별도의 UserDefaults plist 파일을 사용합니다. 이 파일은 기기의 앱의 샌드박스 컨테이너 디렉토리에 위치하며, 사용자나 다른 앱이 직접 액세스하거나 편집할 수 없습니다.

UserDefaults plist 파일은 시스템이 앱을 대신하여 생성하고 관리하는 파일입니다. 이 파일은 UserDefaults를 사용하여 저장한 키-값 쌍을 이진 형식으로 저장합니다. 각 앱은 고유한 UserDefaults plist 파일을 갖고 있으며, 데이터는 앱의 샌드박스 내에서 격리되어 있습니다.

반면, Info.plist 파일은 앱에 대한 구성 정보를 포함하는 속성 목록 파일입니다. 번들 식별자, 버전 번호, 지원하는 기기 방향과 같은 정보를 시스템에 제공하기 위해 주로 사용됩니다. 런타임 데이터나 환경 설정을 저장하기 위한 용도로는 사용되지 않습니다.

Sandbox는 무엇인가?

샌드박스는 iOS 앱 개발에서 사용되는 보안 메커니즘으로, 앱과 사용자 데이터를 보호하며 앱 간에 엄격한 격리를 구현합니다. 각 iOS 앱은 고유한 샌드박스 환경에서 작동하며, 해당 환경은 앱과 관련된 모든 리소스와 데이터를 포함하는 제한적인 파일 시스템 디렉토리입니다.

샌드박스는 다음과 같은 주요 특징을 제공합니다:

  1. 격리: 각 앱의 샌드박스는 다른 앱과 분리되어 있으므로 앱은 자체 파일과 리소스에만 접근할 수 있습니다. 다른 앱이나 시스템의 파일에 직접적으로 접근하거나 수정할 수 없습니다.

  2. 파일 시스템: 앱의 샌드박스에는 실행 가능한 코드와 리소스를 포함한 앱 번들, 사용자가 생성한 파일을 위한 Documents 디렉토리, 앱에 특화된 파일을 위한 Library 디렉토리, 그리고 임시 데이터를 위한 Cache 디렉토리 등 다양한 데이터 저장 디렉토리가 포함됩니다.

  3. 데이터 보호: 앱의 샌드박스에 저장된 데이터는 시스템에 의해 자동으로 암호화되어 사용자의 민감한 정보가 안전하게 보호됩니다.

  4. 앱 컨테이너: 앱의 샌드박스는 앱의 환경을 위한 컨테이너 역할을 하며, 환경 설정, 사용자 생성 파일, 임시 파일, 캐시 데이터 등 앱의 모든 데이터를 포함하는 구조화된 환경을 제공합니다.

  5. 앱 권한: 샌드박스는 앱에 부여된 권한과 접근 권한을 제어합니다. 예를 들어, 사용자가 명시적으로 허용하지 않으면 앱은 카메라 또는 위치 서비스에 대한 접근 권한을 가지지 못합니다.

iOS는 샌드박스를 시행함으로써 앱 간의 격리를 유지하고 사용자 데이터나 앱 간 간섭의 위험을 줄입니다. 이는 iOS 생태계의 보안, 안정성, 개인 정보 보호를 유지하는 데 도움이 됩니다.

0개의 댓글