CloudKit 네임스페이스
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
CloudKit 네임스페이스는 iCloud에 대한 액세스를 제공합니다.
클래스
CKAcceptSharesOperation |
공유 레코드를 허용하는 작업을 구현합니다. |
CKAsset |
개체와 연결된 큰 파일입니다 CKRecord . |
CKContainer |
공유 및 사용자별 개인 데이터를 포함하여 앱과 연결된 콘텐츠를 캡슐화합니다. |
CKContainer.Notifications |
클래스에서 게시한 알림입니다 CKContainer . |
CKDatabase |
내 CKContainer의 데이터를 포함합니다. 퍼블릭 CKDatabase 은 공유 데이터를 제공하고 프라이빗 db는 현재 사용자의 데이터를 보유합니다. |
CKDatabaseNotification |
데이터베이스 활동에 대한 알림입니다. |
CKDatabaseOperation |
에 대한 작업에 대한 추상 클래스입니다 CKDatabase. |
CKDatabaseSubscription |
데이터베이스 구독. |
CKDiscoverAllContactsOperation |
CKOperation 앱 사용자의 검색 가능한 모든 연락처의 ID를 검색하는 입니다. |
CKDiscoverAllUserIdentitiesOperation |
시스템의 주소록에서 검색 가능한 모든 사용자를 가져오는 작업입니다. |
CKDiscoveredUserInfo |
사용자에 대한 정보입니다. 에서 반환됩니다 CKDiscoverAllContactsOperation. |
CKDiscoverUserIdentitiesOperation |
기준과 일치하는 사용자를 찾는 작업입니다. |
CKDiscoverUserInfosOperation |
CKOperation 이메일 주소 또는 레코드 ID가 앱 개발자에게 이미 알려진 검색 가능한 사용자의 ID를 검색하는 입니다. |
CKErrorCodeExtensions |
CloudKit.CKErrorCode 열거형에 대한 확장 메서드입니다. |
CKErrorFields |
CloudKit에서 사용하는 오류 상수를 보유합니다. |
CKFetchDatabaseChangesOperation |
데이터베이스 변경 내용을 가져오는 작업입니다. |
CKFetchNotificationChangesOperation |
CKOperation ret.. /.. /summary_set.sh CKFetchNotificationChangesOperation A |
CKFetchRecordChangesOperation |
CKDatabaseOperation 변경되거나 삭제 CKRecord 된 개체에 대한 데이터를 검색하는 입니다. |
CKFetchRecordsOperation |
CKDatabaseOperation 특정 CKRecord 개체를 검색하는 입니다. |
CKFetchRecordZoneChangesConfiguration |
CloudKit 네임스페이스는 iCloud에 대한 액세스를 제공합니다. |
CKFetchRecordZoneChangesOperation |
CloudKit 네임스페이스는 iCloud에 대한 액세스를 제공합니다. |
CKFetchRecordZoneChangesOptions |
레코드 영역 변경 내용을 가져오는 방법을 제어하는 옵션이 포함되어 있습니다. |
CKFetchRecordZonesOperation |
CKDatabaseOperation iCloud에서 개체를 검색하는 CKRecordZone 입니다. |
CKFetchShareMetadataOperation |
여러 공유에 대한 공유 메타데이터를 가져오는 작업입니다. |
CKFetchShareParticipantsOperation |
공유 레코드에 대한 공유 참가자를 가져오는 작업입니다. |
CKFetchSubscriptionsOperation |
CKDatabaseOperation iCloud에서 개체를 검색하는 CKSubscription 입니다. |
CKFetchWebAuthTokenOperation |
CloudKit 대시보드에서 지정된 API 토큰에 대한 웹 인증 토큰을 반환하는 작업입니다. |
CKLocationSortDescriptor |
지정된 위치에서의 거리에 따라 레코드를 정렬합니다. |
CKMarkNotificationsReadOperation |
푸시 알림을 읽은 것으로 표시합니다. 일반적으로 푸시 알림을 사용하여 레코드 변경 내용을 추적하는 앱에서 사용됩니다. |
CKModifyBadgeOperation |
CKOperation 현재 디바이스 또는 모든 사용자의 디바이스에서 앱 아이콘의 배지를 수정하는 입니다. |
CKModifyRecordsOperation |
CKDatabaseOperation 하나 이상의 CKRecord 개체에 대한 변경 내용을 커밋하는 입니다. |
CKModifyRecordZonesOperation |
CKDatabaseOperation 레코드 영역에 변경 내용을 커밋하는 입니다. |
CKModifySubscriptionsOperation |
CKDatabaseOperation 하나 이상의 CKSubscription 개체에 대한 변경 내용을 커밋하는 입니다. |
CKNotification |
앱으로 전송된 푸시 알림입니다. |
CKNotificationID |
컨테이너에서 보낸 푸시 알림을 고유하게 식별합니다. |
CKNotificationInfo |
트리거 조건이 충족될 때 생성되는 푸시 알림의 유형을 지정합니다. |
CKOperation |
CloudKit 데이터베이스에 대해 실행되는 작업에 대한 추상 기본 클래스입니다. |
CKOperationConfiguration |
CloudKit 작업의 동작을 구성합니다. |
CKOperationGroup |
CloudKit 작업의 일괄 처리 그룹을 나타냅니다. |
CKQuery |
CloudKit 데이터베이스에 대한 쿼리를 지정합니다. |
CKQueryCursor |
의 결과 집합에 현재 중지점을 보유합니다 CKQuery. |
CKQueryNotification |
개체에 의해 생성된 푸시 알림입니다 CKSubscription . |
CKQueryOperation |
CKDatabaseOperation 를 실행하는 입니다CKQuery. |
CKQuerySubscription |
개발자가 쿼리를 기반으로 알림을 만들 수 있습니다. |
CKRecord |
CloudKit 내에서 데이터를 구성하는 Key-Value 쌍의 사전입니다. |
CKRecordID |
데이터베이스 내에서 을 CKRecord 고유하게 식별합니다. |
CKRecordValue |
앱 개발자는 CloudKit 데이터베이스에 저장된 개체에 강력한 입력을 제공하는 이 인터페이스를 서브클래싱해서는 안 됩니다. 사용자 지정 데이터 유형이 지원되지 않습니다. |
CKRecordZone |
관련 CKRecord 개체를 구성할 수 있습니다. 기본적으로 프라이빗 데이터베이스와 공용 데이터베이스에는 모두 단일 영역이 있습니다. |
CKRecordZoneID |
데이터베이스 내에서 을 CKRecordZone 고유하게 식별합니다. |
CKRecordZoneNotification |
내의 변경 내용으로 인해 발생하는 푸시 알림입니다 CKRecordZone. |
CKRecordZoneSubscription |
영역 변경 내용을 기록하는 구독입니다. |
CKReference |
단일 CKRecordZone내의 개체 간에 CKRecord 1:M 관계를 정의합니다. |
CKServerChangeToken |
의 버전을 식별하는 읽기 전용 개체입니다 CKRecord. 업데이트된 데이터를 가져올 때 기존 토큰을 전달하면 서버에서 변경 내용만 반환하여 효율성을 높일 수 있습니다. |
CKShare |
공유 레코드를 나타냅니다. |
CKShareKeys |
다양한 CloudKit 클래스에서 사용되는 상수입니다. |
CKShareMetadata |
공유 레코드 공유 메타데이터를 나타냅니다. |
CKShareParticipant |
공유 참가자에 대한 데이터를 포함합니다. |
CKSubscription |
서버의 변경 내용을 추적하는 영구 쿼리입니다. CKQueryNotification을 참조하십시오. |
CKUserIdentity |
사용자 또는 사용자를 조회하는 데 사용되는 정보를 포함합니다. |
CKUserIdentityLookupInfo |
사용자를 조회하는 데 사용할 수 있는 데이터를 포함합니다. |
인터페이스
ICKRecordValue |
프로토콜 CKRecordValue의 필수 메서드(있는 경우)를 나타내는 인터페이스입니다. |
열거형
CKAccountStatus |
사용자의 iCloud 계정을 사용할 수 있는지 여부를 나타내는 값을 열거합니다. |
CKApplicationPermissions |
다른 앱 사용자가 전자 메일 주소로 현재 사용자를 검색할 수 있음을 나타내는 값을 열거합니다. |
CKApplicationPermissionStatus |
사용 권한을 얻으려고 시도할 때 애플리케이션이 가질 수 있는 상태를 열거합니다. |
CKDatabaseScope |
데이터베이스가 프라이빗, 공유 또는 공용인지 여부를 알려주는 값을 열거합니다. |
CKErrorCode |
CloudKit 오류 조건을 열거합니다. |
CKNotificationType |
푸시 알림을 생성할 수 있는 이벤트를 열거합니다. |
CKOperationGroupTransferSize |
CloudKit 네임스페이스는 iCloud에 대한 액세스를 제공합니다. |
CKQueryNotificationReason |
데이터 수명 주기 알림을 트리거할 수 있는 영구 스토리지 이벤트를 열거합니다. |
CKQuerySubscriptionOptions |
에서 알림을 발생시키는 시간 또는 시간을 CKSubscription 열거합니다. |
CKRecordSavePolicy |
레코드를 저장해야 하는 시기 또는 시기를 제어하는 정책을 열거합니다. |
CKRecordZoneCapabilities |
영역이 수행할 수 있는 특수 작업을 열거합니다. |
CKReferenceAction |
대상 레코드를 삭제할 때 참조를 삭제할지 여부를 제어하는 값을 열거합니다. |
CKShareParticipantAcceptanceStatus |
참가 요청을 공유하기 위한 응답을 열거합니다. |
CKShareParticipantPermission |
사용자 공유 권한을 열거합니다. |
CKShareParticipantRole |
CloudKit 네임스페이스는 iCloud에 대한 액세스를 제공합니다. |
CKShareParticipantType |
공유 참가자 유형을 열거합니다. |
CKSubscriptionOptions |
쿼리 기반 구독에 대한 푸시 알림 동작을 제어하기 위한 플래그를 열거합니다. |
CKSubscriptionType |
구독 유형을 열거합니다. |
대리자
설명
CloudKit 네임스페이스를 사용하면 애플리케이션 개발자가 애플리케이션과 iCloud 간의 데이터 흐름을 제어할 수 있습니다. iCloud는 애플리케이션 또는 특정 애플리케이션의 모든 인스턴스 간에 공유되는 "public"과 단일 사용자에게 고유한 "프라이빗" 서버 쪽 데이터 스토리지를 제공합니다. iCloud 스토리지 및 전송은 Apple 디바이스 간에 암호화되고 동기화됩니다. CloudKit은 클라이언트 쪽 지속성 또는 데이터 캐싱을 제공하지 않습니다. CloudKit 기능은 사용자가 활성 인터넷 연결을 사용하는 동안에만 사용할 수 있습니다.
CloudKit에서 가장 높은 수준의 클래스는 입니다 CKContainer. CloudKit 컨테이너(Apple 설명서에서 "유비쿼티 컨테이너"라고도 함)는 특정 이름으로 식별되는 정보 저장소입니다. Apple은 "iCloud" 형식의 이름을 사용하는 것이 좋습니다. {역방향 DNS}. {appName}",예: "iCloud.com.mycompany.MyApp". 개발자는 Apple 개발자 포털을 통해 사용할 수 있는 iCloud 대시보드를 사용하여 컨테이너를 만들고 구성해야 합니다.
단일 CKContainer 에는 앱 PublicCloudDatabase의 모든 인스턴스 간에 공유되는 공용 데이터와 사용자별 데이터가 포함된 프라이빗 데이터(참조 PrivateCloudDatabase)가 모두 포함될 수 있습니다. iCloud 내에서 퍼블릭 데이터는 앱의 iCloud 스토리지에 저장되고 프라이빗 데이터는 사용자의 개인 iCloud 스토리지에 저장됩니다. 퍼블릭 CKDatabase 은 iCloud에 로그인되었는지 여부에 관계없이 앱의 연결된 모든 사용자가 사용할 수 있습니다. 프라이빗 CKDatabase 은 사용자가 iCloud에 로그인한 경우에만 적용됩니다. 개발자는 사용자의 로그인 또는 연결 상태 변경에 정상적으로 반응하도록 코드를 작성해야 합니다.
이러한 공용 및 개인 CKDatabase 개체는 구조화된 레코드를 저장합니다. 이러한 개체는 개체로 CKRecord 표시됩니다. 필드와 유사한 키-값 데이터 외에도 이러한 레코드는 큰 개체를 직접(포함하는 CKRecord를 사용하여 검색) 또는 참조로 보유 CKAsset 할 수 있습니다(큰 데이터의 지연 검색 허용).
모든 CKRecord 인스턴스는 내에 CKRecordZone저장됩니다. CKRecordZone 은 기존 데이터베이스 인스턴스와 비슷합니다. 서로 참조할 수 있지만 다른 CKRecordZone 인스턴스에 저장되지 않는 여러 CKRecord 저장소를 포함할 수 있으며 CKRecordZone 개체를 사용하여 여러 CKRecord 저장소에서 원자성 작업을 조정할 수 있습니다. 데이터베이스 인스턴스의 유사성은 범용이 아닙니다. 예를 들어 개발자는 M:CKDatabase.FetchRecordAsync(CKRecordAsync)를 사용하여 영역을 참조하지 않고 에서 CKDatabase 직접 를 검색 CKRecord 할 수 있습니다. 기본값 CKRecordZone 은 P:CloudKit.CKRecordZone.DefaultRecordZone()을 통해 사용할 수 있습니다. 개발자는 CloudKit 대시보드를 사용하여 추가 영역을 만들고 이를 사용하여 데이터를 논리적으로 분할할 수 있습니다.
CloudKit 앱에는 자격이 있는 com.apple.developer.icloud-services
프로비저닝 프로필과 앱별 번들 식별자(예: "com.mycompany.CloudKitApp")가 필요합니다. 개발자는 이러한 프로비저닝 프로필을 만들고 구성해야 합니다.
다음은 단일 레코드에서 작동하는 CloudKit의 몇 가지 일반적인 용도를 보여 줍니다.
//Create
private async Task<CKRecord> StoreInCloudKit (string name, CLLocation loc, int stationId)
{
string containerName = "iCloud.com.xamarin.CKWork";
var container = CKContainer.FromIdentifier (containerName);
CKDatabase publicDatabase = container.PublicCloudDatabase;
var zoneId = CKRecordZone.DefaultRecordZone ().ZoneId;
var recordType = "StationReferences";
var record = new CKRecord (recordType);
record ["Name"] = new NSString (name);
record ["Position"] = loc;
record ["StationID"] = new NSNumber (stationId);
var storedRecord = await publicDatabase.SaveRecordAsync (record);
return storedRecord;
}
//Retrieve (via ID)
private async Task<CKRecord> AccessCloudKit ()
{
string containerName = "iCloud.com.xamarin.CKWork";
var container = CKContainer.FromIdentifier (containerName);
CKDatabase publicDatabase = container.PublicCloudDatabase;
var recordNameIHappenToKnow = "7eaf0432-2fa4-475f-851a-c6a19b3f8587";
var recordId = new CKRecordID (recordNameIHappenToKnow);
var record = await publicDatabase.FetchRecordAsync (recordId);
return record;
}
//Retrieve (query)
private async Task<CKRecord []> QueryCloudKit ()
{
string containerName = "iCloud.com.xamarin.CKWork";
var container = CKContainer.FromIdentifier (containerName);
CKDatabase publicDatabase = container.PublicCloudDatabase;
var zoneId = CKRecordZone.DefaultRecordZone ().ZoneId;
Console.WriteLine ($"Default zone name = '{zoneId.ZoneName}' owner = '{zoneId.OwnerName}'");
/*
var zoneName = "_defaultZone";
var ownerName = "__defaultOwner__";
var zoneId0 = new CKRecordZoneID (zoneName, ownerName);
Console.WriteLine ($"Assert { zoneId0 == zoneId }");
*/
var recordType = "StationReferences";
var location = new CLLocation (19.7303, -155.056);
var predicate = NSPredicate.FromFormat ("distanceToLocation:fromLocation:(Position, %@) < 100", location);
var query = new CKQuery (recordType, predicate);
var result = await publicDatabase.PerformQueryAsync (query, zoneId);
return result;
}
//Update
private async Task<CKRecord> UpdateInCloudKit (CKDatabase database, CKRecord record, NSString key, NSObject newValue)
{
record [key] = newValue;
var modifiedRecord = await database.SaveRecordAsync (record);
return modifiedRecord;
}
//Delete
private async Task<CKRecordID> DeleteRecord (CKDatabase database, CKRecord record)
{
var id = record.Id;
var deletedId = await database.DeleteRecordAsync (id);
return deletedId;
}