CloudKit Пространство имен
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Пространство имен CloudKit предоставляет доступ к iCloud.
Классы
CKAcceptSharesOperation |
Реализует операцию, которая принимает общие записи. |
CKAsset |
Большой файл, связанный CKRecord с объектом . |
CKContainer |
Инкапсулирует содержимое, связанное с приложением, включая общие и личные данные для каждого пользователя. |
CKContainer.Notifications |
Уведомление, размещенное классом CKContainer . |
CKDatabase |
Содержит данные в .CKContainer Общедоступная CKDatabase предоставляет общие данные, частная база данных — данные текущего пользователя. |
CKDatabaseNotification |
Уведомление о действиях базы данных. |
CKDatabaseOperation |
Абстрактный класс для операций с CKDatabaseобъектом . |
CKDatabaseSubscription |
Подписка на базу данных. |
CKDiscoverAllContactsOperation |
Объект CKOperation , извлекает идентификаторы всех обнаруживаемых контактов пользователя приложения. |
CKDiscoverAllUserIdentitiesOperation |
Операция, которая получает всех обнаруживаемых пользователей в адресной книге системы. |
CKDiscoveredUserInfo |
Сведения о пользователе. Возвращается .CKDiscoverAllContactsOperation |
CKDiscoverUserIdentitiesOperation |
Операция поиска пользователей, соответствующих критерию. |
CKDiscoverUserInfosOperation |
Объект CKOperation , извлекает идентификаторы обнаруживаемых пользователей, чьи адреса электронной почты или идентификаторы записей уже известны разработчику приложения. |
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 , извлекающий CKRecordZone объекты из iCloud. |
CKFetchShareMetadataOperation |
Операция, которая извлекает общие метаданные для нескольких общих папок. |
CKFetchShareParticipantsOperation |
Операция, которая извлекает общих участников для общих записей. |
CKFetchSubscriptionsOperation |
Объект CKDatabaseOperation , извлекающий CKSubscription объекты из iCloud. |
CKFetchWebAuthTokenOperation |
Операция, возвращающая маркер веб-проверки подлинности для указанного маркера API с панели мониторинга CloudKit. |
CKLocationSortDescriptor |
Сортирует записи на основе их расстояния от указанного расположения. |
CKMarkNotificationsReadOperation |
Помечает push-уведомления как прочитанные. Обычно используется приложениями, которые используют push-уведомления для отслеживания изменений. |
CKModifyBadgeOperation |
Объект , CKOperation изменяющий эмблему значка приложения на текущем устройстве или на всех устройствах пользователя. |
CKModifyRecordsOperation |
Объект CKDatabaseOperation , который фиксирует изменения в одном или нескольких объектах CKRecord . |
CKModifyRecordZonesOperation |
Объект CKDatabaseOperation , который фиксирует изменения в зонах записей. |
CKModifySubscriptionsOperation |
Объект CKDatabaseOperation , который фиксирует изменения в одном или нескольких объектах CKSubscription . |
CKNotification |
Push-уведомление, отправленное приложению. |
CKNotificationID |
Уникально идентифицирует push-уведомление, отправленное из контейнера. |
CKNotificationInfo |
Указывает тип push-уведомлений, создаваемых при выполнении условия триггера. |
CKOperation |
Абстрактный базовый класс для операций, выполняемых в базе данных CloudKit. |
CKOperationConfiguration |
Настраивает поведение операции CloudKit. |
CKOperationGroup |
Представляет пакетную группу операций CloudKit. |
CKQuery |
Задает запрос к базе данных CloudKit. |
CKQueryCursor |
Содержит текущую точку остановки в результирующем наборе CKQueryобъекта . |
CKQueryNotification |
Push-уведомление, созданное CKSubscription объектом . |
CKQueryOperation |
Объект CKDatabaseOperation , выполняющий CKQuery. |
CKQuerySubscription |
Позволяет разработчикам создавать уведомления на основе запроса. |
CKRecord |
Словарь пар Key-Value, которые структурирует данные в CloudKit. |
CKRecordID |
Уникально идентифицирует в CKRecord базе данных. |
CKRecordValue |
Разработчикам приложений не следует выполнять подклассы этого интерфейса, который обеспечивает строгое опечатывание объектов, хранящихся в базе данных CloudKit. Пользовательские типы данных не поддерживаются. |
CKRecordZone |
Позволяет упорядочивать связанные CKRecord объекты. По умолчанию частная и общедоступная базы данных имеют одну зону. |
CKRecordZoneID |
Уникально идентифицирует в CKRecordZone базе данных. |
CKRecordZoneNotification |
Push-уведомление, полученное в результате изменений в объекте CKRecordZone. |
CKRecordZoneSubscription |
Подписка на изменение зоны записи. |
CKReference |
Определяет связь 1:M между CKRecord объектами в пределах одного CKRecordZoneобъекта . |
CKServerChangeToken |
Объект, доступный только для чтения, идентифицирующий версию CKRecord. При получении обновленных данных передача существующего маркера позволяет серверу только возвращать изменения, повышая эффективность. |
CKShare |
Представляет общую запись. |
CKShareKeys |
Константы, используемые различными классами CloudKit. |
CKShareMetadata |
Представляет общие метаданные записи. |
CKShareParticipant |
Содержит данные для участника общей папки. |
CKSubscription |
Постоянный запрос, который отслеживает изменения на сервере. (См. раздел CKQueryNotification.) |
CKUserIdentity |
Содержит сведения, используемые для поиска пользователя или пользователей. |
CKUserIdentityLookupInfo |
Содержит данные, которые можно использовать для поиска пользователя. |
Интерфейсы
ICKRecordValue |
Интерфейс, представляющий обязательные методы (если таковые есть) протокола CKRecordValue. |
Перечисления
CKAccountStatus |
Перечисляет значения, указывающие, доступна ли учетная запись пользователя iCloud. |
CKApplicationPermissions |
Перечисляет значение, указывающее, что другие пользователи приложения могут обнаруживать текущего пользователя по адресу электронной почты. |
CKApplicationPermissionStatus |
Перечисляет состояния, которые могут быть у приложения при попытке получить разрешение. |
CKDatabaseScope |
Перечисляет значения, определяющие, является ли база данных частной, общей или общедоступной. |
CKErrorCode |
Перечисляет условия ошибок CloudKit. |
CKNotificationType |
Перечисляет события, которые могут создавать push-уведомления. |
CKOperationGroupTransferSize |
Пространство имен CloudKit предоставляет доступ к iCloud. |
CKQueryNotificationReason |
Перечисляет события постоянного хранилища, которые могут активировать уведомления о жизненном цикле данных. |
CKQuerySubscriptionOptions |
Перечисляет время или время срабатывания CKSubscription уведомления. |
CKRecordSavePolicy |
Перечисляет политики, определяющие, когда и нужно ли сохранять запись. |
CKRecordZoneCapabilities |
Перечисляет специальные операции, которые может выполнять зона. |
CKReferenceAction |
Перечисляет значения, определяющие, должна ли ссылка удалять себя при удалении целевой записи. |
CKShareParticipantAcceptanceStatus |
Перечисляет ответы для предоставления общего доступа к запросам на участие. |
CKShareParticipantPermission |
Перечисляет разрешения общей папки пользователя. |
CKShareParticipantRole |
Пространство имен CloudKit предоставляет доступ к iCloud. |
CKShareParticipantType |
Перечисляет типы участников общих ресурсов. |
CKSubscriptionOptions |
Перечисляет флаги для управления поведением push-уведомлений для подписок на основе запросов. |
CKSubscriptionType |
Перечисляет типы подписок. |
Делегаты
CKAcceptPerShareCompletionHandler |
Пространство имен CloudKit предоставляет доступ к iCloud. |
CKDatabaseDeleteSubscriptionHandler |
Обработчик завершения для DeleteSubscription(String, CKDatabaseDeleteSubscriptionHandler) метода . |
CKDiscoverUserInfosCompletionHandler |
Разработчики приложений могут реализовать этот delgate и назначить его свойству M:CloudKit.CKDiscoverUserInfosOperation.Complete* для обработки возвращаемых сведений о пользователе. |
CKFetchDatabaseChangesCompletionHandler |
Пространство имен CloudKit предоставляет доступ к iCloud. |
CKFetchPerShareMetadataHandler |
Пространство имен CloudKit предоставляет доступ к iCloud. |
CKFetchRecordChangesHandler |
Делегат для AllChangesReported свойства . |
CKFetchRecordsCompletedHandler |
Делегат для Completed свойства . |
CKFetchRecordZoneChangesFetchCompletedHandler |
Пространство имен CloudKit предоставляет доступ к iCloud. |
CKFetchRecordZoneChangesTokensUpdatedHandler |
Пространство имен CloudKit предоставляет доступ к iCloud. |
CKFetchRecordZoneChangesWithIDWasDeletedHandler |
Пространство имен CloudKit предоставляет доступ к iCloud. |
CKFetchSubscriptionsCompleteHandler |
Делегат для Completed свойства . |
CKFetchWebAuthTokenOperationHandler |
Пространство имен CloudKit предоставляет доступ к iCloud. |
CKMarkNotificationsReadHandler |
Делегат для Completed свойства . |
CKModifyRecordsOperationHandler |
Делегат для Completed свойства . |
CKModifyRecordZonesHandler |
Делегат для Completed свойства . |
CKModifySubscriptionsHandler |
Делегат для Completed свойства . |
CKRecordZoneCompleteHandler |
Делегат для Completed свойства . |
Комментарии
Пространство имен CloudKit позволяет разработчикам приложений управлять потоком данных между приложениями и iCloud. iCloud предоставляет хранилище данных на стороне сервера, как "общедоступное", совместно используемое всеми экземплярами приложения или конкретными приложениями, так и "частное", уникальное для одного пользователя. Хранилище и транспорт iCloud шифруются и синхронизируются между устройствами Apple. CloudKit не обеспечивает сохраняемость на стороне клиента или кэширование данных. Функции CloudKit доступны только при наличии у пользователя активного подключения к Интернету.
Класс самого высокого уровня в CloudKit — .CKContainer Контейнер CloudKit (иногда называемый в документации Apple контейнером Ubiquity) — это хранилище данных, идентифицируемое с определенным именем. Apple советует использовать имя формы "iCloud. {reverse DNS}. {appName}", например "iCloud.com.mycompany.MyApp". Разработчики должны создавать и настраивать свои контейнеры с помощью панели мониторинга iCloud, доступной на портале разработчика Apple.
Один может CKContainer содержать как общедоступные данные, которые совместно используются всеми экземплярами приложения (см. PublicCloudDatabase), так и частные данные, содержащие пользовательские данные (см. ).PrivateCloudDatabase В iCloud общедоступные данные хранятся в хранилище iCloud приложения, а частные — в частном хранилище iCloud пользователя. Общедоступный CKDatabase доступ доступен для всех подключенных пользователей приложения, независимо от того, вошли ли они в iCloud. Закрытый CKDatabase используется только в том случае, если пользователь вошел в iCloud. Разработчики должны написать свой код таким образом, чтобы он корректно реагировал на изменения в состоянии входа или подключения пользователя.
Эти общедоступные и частные CKDatabase объекты хранят структурированные записи. Они представлены объектами CKRecord . В дополнение к данным типа "ключ-значение", эти записи могут содержать CKAsset большие объекты либо напрямую (извлекаются с помощью содержащего CKRecord) либо в виде ссылок (что позволяет отложенно извлекать большие данные).
Все CKRecord экземпляры хранятся в CKRecordZone. Является CKRecordZone чем-то вроде традиционного экземпляра базы данных: он может содержать несколько CKRecord хранилищ, которые могут ссылаться друг на друга, но не на хранилища в других CKRecordZone экземплярах, а CKRecordZone объекты могут использоваться для координации атомарных операций в нескольких хранилищах CKRecord . Сходство с экземпляром базы данных не является универсальным; Например, разработчик может использовать M:CKDatabase.FetchRecordAsync(CKRecordID) для получения CKRecord непосредственно из CKDatabase без ссылки на зону. Значение по умолчанию 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;
}