일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 글또x코드트리
- 클린코드
- 12회차
- 글또
- 초보iOS개발자
- 글또9기
- 리액트입문
- RxSwift
- 알고리즘
- 개발회고
- SwiftUI
- Swift알고리즘
- 글쓰기
- UIKit
- Postman
- 수정중
- git
- 개인앱
- JavaScript
- ios
- 스유
- 글또10기
- iOS개발
- github
- 유데미
- 왕초보
- Swift
- ViewBuilder
- 회고
- 비동기
- Today
- Total
playground_avec coding
CloudKit 도입해서 iCloud 활용하기 본문
저번에 이은 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 프로그래밍 개정증보판 (닐 스미스) 를 읽고 정리한 글입니다. 피드백 환영입니다.
'Apple > Apple Frameworks' 카테고리의 다른 글
서버 없이 로컬 데이터 관리 하고 싶어요. (2) | 2025.03.16 |
---|---|
[ UIView ] SnapKit 사용하기 ( 공부하면서 연습 중..) (2) | 2022.03.25 |
[ uiux ] storyboard 와 autolayout 을 코드로..? (0) | 2022.03.25 |