공유 iPad에 맞게 앱 최적화하기
공유 iPad를 통해 여러 사용자가 공유하는 iPad에서 맞춤형 경험을 제공할 수 있습니다. 다음 모범 사례를 따라 개별 사용자의 데이터가 클라우드를 기반으로 효율적으로 관리되도록 하세요.
사용자를 전환하거나 기기를 재구성할 때 로컬 데이터가 제거될 수 있으므로 응용 프로그램 아키텍처와 사용자별 데이터의 유형 및 양에 맞춰 영구 저장 공간을 확보하는 것이 중요합니다.
공유 iPad 지원 테스트하기
앱이 클라우드 기반이거나 데이터를 로컬에 저장하지 않는 경우 앱에서 이미 공유 iPad를 지원하는 것일 수 있습니다.* 두 대의 단일 사용자 iPad 기기에서 동일한 Apple 계정으로 로그인하여 다음을 수행하면 앱이 공유 iPad에서 잘 작동하는지 테스트할 수 있습니다.
- Apple 계정으로 로그인한 iPad에서 앱을 실행합니다.
- 콘텐츠를 생성, 변경 또는 추가하면서 사용자 입장에서 상호 작용합니다.
- 이 iPad에서 Apple 계정에서 로그아웃합니다.
- 동일한 Apple 계정을 사용하여 두 번째 iPad에 로그인합니다.
- 앱을 다운로드하고 실행합니다.
앱에서 마지막에 멈췄던 지점부터 바로 이어서 진행할 수 있다면 앱이 공유 iPad를 지원하는 것입니다. 이 사례는 경우에 따라 공유 iPad에서 지정된 사용자나 앱의 데이터를 제거해야 할 때도 적용됩니다.
제거 가능한 로컬 저장 공간 표시하기
제거 가능한 로컬 저장 공간을 지원한다는 것은 지속성이 중요한 콘텐츠(예: 계산기 앱)가 없거나 앱에서 지속성을 필요로하는 모든 콘텐츠를 클라우드에 저장한다는 의미입니다. 데이터 관리 및 동기화 모범 사례를 구현한 후에는 프로젝트의 info.plist에서 NSSupportsPurgeableLocalStorage(영문) 키를 'yes'로 설정하여 공유 iPad에 대한 지원 여부를 표시할 수 있습니다. 이것은 사용자가 로그아웃할 때 앱에서 로컬 데이터를 제거하도록 지원한다는 것을 나타냅니다. 이를 통해 Apple School Manager를 사용하는 고객에게 공유 iPad에서 앱이 원활하게 작동된다는 것을 보여 줄 수 있습니다.
데이터 관리 모범 사례
모든 사용자 데이터를 클라우드에 저장합니다. 공유 iPad에는 앱 사용 간에 지속적으로 유지되어야 하는 모든 데이터를 위해 클라우드 기반 동기화 모델이 필요합니다. NSURLSession을 사용하여 앱의 백엔드로 데이터를 전송하거나, NSUbiquitousKeyValueStore를 사용하여 iCloud로 데이터를 전송하고 키체인에 자격 증명을 저장합니다.
요청 시 원격 데이터를 가져옵니다. 해당 앱과 연결된 모든 데이터가 특정 시점에 필요하지 않을 수 있으므로 데이터가 필요한 시점 또는 직전에 필요한 데이터만 다운로드할 수 있는 다운로드 전략을 개발합니다. 앱에서 필요할 수 있는 모든 알려진 사용자 콘텐츠를 다시 가져오는 것보다 현재 상황에서 필요한 콘텐츠만 가져오는 것을 고려하세요.
데이터 변경 시 이를 동기화합니다. 사용자가 입력하거나 생성한 데이터를 받는 즉시 데이터를 동기화합니다. 최소한 applicationWillResignActive 중에는 동기화가 필요하지만 동기화를 위해 너무 오래 기다리거나 과도하게 큰 배치를 보유하면 사용자 경험을 저해하고 드물게 데이터가 손실될 수 있다는 점에 유의하세요.
클라우드에 최초 실행 또는 진행 상황 플래그를 저장합니다. 앱에서 현재 로컬 파일 시스템 또는 NSUserDefaults에 저장된 플래그를 기반으로 최초 실행 경험이 필요한지 여부를 결정하는 경우 개발자는 이러한 사용자별 플래그를 NSUbiquitousKeyValueStore로 이동하고 최초 실행 경험을 제시하기 전에 확인해야 합니다.
NSUbiquitousKeyValueStore에 대한 자세한 내용은 NSUbiquitousKeyValueStore 클래스 참조(영문) 및 PrefsInCloud(영문) 샘플 프로젝트를 확인하세요.
백그라운드 작업 어셜션 요구 사항을 제한합니다. 백그라운드 작업 어셜션에서 수행하는 작업의 양은 데이터 일관성 및 동기화를 보장하기 위해 필요한 최소한의 양으로 제한합니다. 사용자 데이터 업로드 시 일반적으로 NSURLSession 또는 iCloud API를 호출합니다. 이 API는 사용자 간 전환을 차단하지 않고 계속해서 네트워크 작업을 수행할 수 있도록 지원합니다.
프로젝트 PList에서 제거 가능한 로컬 저장 공간 지원을 표시합니다. 프로젝트의 info.plist에서 NSSupportsPurgeableLocalStorage(영문) 키를 'yes'로 설정하여 공유 iPad에 대한 지원을 표시합니다. 이것은 사용자가 로그아웃할 때 앱에서 로컬 데이터를 제거하도록 지원한다는 것을 나타냅니다.
동기화 기술
NSURLSession을 사용하여 동기화합니다. 앱에서 NSURLSession을 적절한 백그라운드 구성과 함께 사용하여 사용자 관련 설정이나 데이터를 푸시하는 경우 사용자가 앱을 전환한 이후를 포함하여 무엇보다 현재 사용자가 공유 iPad에서 로그아웃한 후에도 업로드가 계속됩니다.
NSURLSession에 대한 자세한 내용은 WWDC 비디오 NSURLSession을 사용한 네트워킹(영어) 및 기초 네트워킹의 새로운 기능(영어)을 시청하고 NSURLSession 클래스 참조(영문)를 확인하세요.
키체인을 통해 자격 증명을 동기화합니다. 공유 iPad의 키체인은 동일한 Apple 계정을 사용하는 기기 전반에서 자동으로 동기화를 수행합니다. 키체인 서비스 API를 통해 키체인에 자격 증명 및 기타 간단한 정보를 저장하여 정보를 안전하게 보관하고 사용자가 로그인할 때마다 사용 가능하게 할 수 있습니다.
키체인 구현에 대한 자세한 내용은 키체인 서비스 프로그래밍 설명서(영문)를 참조하세요.
iCloud를 통해 데이터를 동기화합니다. iCloud 도큐멘트 및 키 값 저장 공간 API에 대한 지원을 구현한다는 것은 해당 동기화 절차를 명시적으로 관리하지 않아도 사용자 콘텐츠가 동기화된다는 것을 의미합니다. CloudKit는 처리 과정에 의존하고 명시적인 제어를 따르지만 CloudKit 작업은 앱이 종료되거나 사용자가 로그아웃하더라도 커밋된 데이터가 iCloud 저장 공간에 도달하도록 설계되었습니다.
앱에 가장 적합한 저장 공간 API는 iCloud 설계 설명서(영문)를 확인하세요.