playground_avec coding

CloudKit 도입해서 iCloud 활용하기 본문

Apple/Apple Frameworks

CloudKit 도입해서 iCloud 활용하기

Nat 2025. 3. 23. 01:23

저번에 이은 CoreData로 저장하는 프로젝트에 CloudKit 을 넣어주기 위해 

Project Name - Signing & Capabilities 의 왼쪽 상단 + Capability 를 클릭해, iCloud 를 검색해 넣어준다. 단, 일반적인 Capability는 애플 친구비(유료 계정비용 한화로 129,000원, 현재 2025년 3월기준)를 내야 사용할 수 있다.

( CoreData 에 대한 정리글은 여기를 참고해주세요. 👉🏻 링크 )

 

Containers 에는 저 위쪽 상단 Bundle Identifier 처럼 조직 식별자(organization identifier)를 포함해 iCloud.com.yourcompany.CoreDataDemo[ProjectName] 을 넣어서 설정해준다. 

 

백그라운드 알림 

상황: 앱이 여러 디바이스에서 실행 중이고 앱의 한 인스턴스에서 데이터가 변경되면 클라우드킷은 원격알림을 통해 앱의 다른 인스턴스에게도 최신 데이터로 업데이트하라고 알림을 보낼 수 있는 기능이다. 이것 또한 Capability 에서 Background modes 를 검색해 추가준다.

 

원격 알림이 활성화되도록 Remote notifications 에 체크해준다. 

 

자 그럼 기존의 일반 CoreData 를 사용했던 PersistentContainer 를 클라우드킷 영구 컨테이너로 바꿔준다. 

우선 Persistence.swift 에서 

import CoreData

struct PersistenceController {
    static let shared = PersistenceController()


    //let container: NSPersistentContainer
    
    let container: NSPersistentCloudKitContainer
    
    init() {
        container = NSPersistentCloudKitContainer(name: "Products")
        container.loadPersistentStores { (storeDescription, error) in
            if let error = error as NSError? {
                fatalError("Unresolved error \(error), \(error.userInfo)")
            }
        }
        container.viewContext.automaticallyMergesChangesFromParent = true
    }
}

주석처리된 NSPersistentContainer 타입에서 NSPersistentCloudKitContainer 타입으로 바꿔주고, 이니셜라이저(생성자) 안 상수에 넣은 컨테이너 형태 또한 NSPersistentCloudKitContainer(name: String) 으로 바꿔준다. 

 

테스트를 실기기 디바이스에서 데이터를 입력하고, 그 데이터를 검토하고 싶다면 아래 버튼을 누른다. 

그럼 웹브라우저 CloudKit Console 창이 뜨고 CloudKit Database 에서 데이터 검색, 에러 발생, 추가, 삭제 등을 관리할 수 있다. 기본적으로 앱 컨테이너의 개인 데이터베이스에 저장된 레코드를 쿼리할 수 있는데,  

Private Database, com.apple.coredata.cloudkit.zone, QueryRecords 로 설정해 저장된 데이터를 조회한다.

 

또한 특정 옵션으로 쿼리 필터링을 통해 검색의 특정 조건을 줘, 그 결과값을 확인할 수도 있다. 정렬 또한 가능함!

특정 조건을 줘 관련 결과값이 조회됨.

값을 직접 삭제할 수도 있다. 실제 디바이스에서 사라진 결과화면 

 

 

정리하며

icloud 기능을 추가해 클라우드킷 서비스와 원격 알림을 활성화할 수 있고, 앱의 특정 계정의 iCloud 의 데이터베이스를 저장하고 컨테이너를 구성할 수 있다. 뿐만 아니라 클라우드킷 콘솔에서는 모니터링도 가능했다. 
Telemetry  - Database, InterfaceType(Native..etc), Platform(devices 종류), Operation 등을 설정해 확인 할수 있다. 

 

* 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍 개정증보판 (닐 스미스) 를 읽고 정리한 글입니다. 피드백 환영입니다.