CloudKit Espacio de nombres
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
El espacio de nombres de CloudKit proporciona acceso a iCloud.
Clases
CKAcceptSharesOperation |
Implementa una operación que acepta registros compartidos. |
CKAsset |
Un archivo grande asociado a un CKRecord objeto . |
CKContainer |
Encapsula el contenido asociado a una aplicación, incluidos los datos privados compartidos y por usuario. |
CKContainer.Notifications |
Notificación publicada por la CKContainer clase . |
CKDatabase |
Contiene datos dentro de .CKContainer Un público CKDatabase proporciona datos compartidos, una base de datos privada contiene los datos del usuario actual. |
CKDatabaseNotification |
Notificación sobre la actividad de la base de datos. |
CKDatabaseOperation |
Clase abstracta para operaciones en .CKDatabase |
CKDatabaseSubscription |
Una suscripción de base de datos. |
CKDiscoverAllContactsOperation |
que CKOperation recupera los identificadores de todos los contactos reconocibles del usuario de la aplicación. |
CKDiscoverAllUserIdentitiesOperation |
Una operación que obtiene todos los usuarios reconocibles en la libreta de direcciones del sistema. |
CKDiscoveredUserInfo |
Información sobre un usuario. Devuelto por .CKDiscoverAllContactsOperation |
CKDiscoverUserIdentitiesOperation |
Operación que busca a los usuarios que coinciden con un criterio. |
CKDiscoverUserInfosOperation |
que CKOperation recupera los identificadores de los usuarios reconocibles cuyas direcciones de correo electrónico o identificadores de registro ya se conocen para el desarrollo de la aplicación. |
CKErrorCodeExtensions |
Métodos de extensión para la enumeración CloudKit.CKErrorCode. |
CKErrorFields |
Contiene constantes de error usadas por CloudKit. |
CKFetchDatabaseChangesOperation |
Una operación que captura los cambios de la base de datos. |
CKFetchNotificationChangesOperation |
Un CKOperation que ret.. /.. /summary_set.sh CKFetchNotificationChangesOperation A |
CKFetchRecordChangesOperation |
que CKDatabaseOperation recupera datos sobre objetos modificados o eliminados CKRecord . |
CKFetchRecordsOperation |
que CKDatabaseOperation recupera objetos específicos CKRecord . |
CKFetchRecordZoneChangesConfiguration |
El espacio de nombres de CloudKit proporciona acceso a iCloud. |
CKFetchRecordZoneChangesOperation |
El espacio de nombres de CloudKit proporciona acceso a iCloud. |
CKFetchRecordZoneChangesOptions |
Contiene opciones que controlan cómo se capturan los cambios de zona de registro. |
CKFetchRecordZonesOperation |
que CKDatabaseOperation recupera CKRecordZone objetos de iCloud. |
CKFetchShareMetadataOperation |
Una operación que captura los metadatos compartidos de varios recursos compartidos. |
CKFetchShareParticipantsOperation |
Una operación que captura los participantes compartidos para los registros compartidos. |
CKFetchSubscriptionsOperation |
que CKDatabaseOperation recupera CKSubscription objetos de iCloud. |
CKFetchWebAuthTokenOperation |
Operación que devuelve un token de autenticación web para un token de API especificado desde el panel de CloudKit. |
CKLocationSortDescriptor |
Ordena los registros en función de su distancia desde la ubicación especificada. |
CKMarkNotificationsReadOperation |
Marca las notificaciones push como leídas. Normalmente, las aplicaciones que usan notificaciones push para realizar un seguimiento de los cambios registrados. |
CKModifyBadgeOperation |
que CKOperation modifica el distintivo del icono de la aplicación, ya sea en el dispositivo actual o en todos los dispositivos del usuario. |
CKModifyRecordsOperation |
que CKDatabaseOperation confirma los cambios en uno o varios CKRecord objetos. |
CKModifyRecordZonesOperation |
que CKDatabaseOperation confirma los cambios en las zonas de registro. |
CKModifySubscriptionsOperation |
que CKDatabaseOperation confirma los cambios en uno o varios CKSubscription objetos. |
CKNotification |
Una notificación push enviada a la aplicación. |
CKNotificationID |
Identifica de forma única una notificación push enviada desde un contenedor. |
CKNotificationInfo |
Especifica el tipo de notificaciones push generadas cuando se cumple la condición del desencadenador. |
CKOperation |
Clase base abstracta para las operaciones ejecutadas en la base de datos de CloudKit. |
CKOperationConfiguration |
Configura el comportamiento de una operación de CloudKit. |
CKOperationGroup |
Representa un grupo por lotes de operaciones de CloudKit. |
CKQuery |
Especifica una consulta en la base de datos de CloudKit. |
CKQueryCursor |
Contiene el punto de detención actual en el conjunto de resultados de .CKQuery |
CKQueryNotification |
Una notificación push generada por un CKSubscription objeto . |
CKQueryOperation |
que CKDatabaseOperation ejecuta un objeto CKQuery. |
CKQuerySubscription |
Permite a los desarrolladores crear notificaciones basadas en una consulta. |
CKRecord |
Diccionario de pares de Key-Value que estructuran los datos en CloudKit. |
CKRecordID |
Identifica de forma única un objeto CKRecord dentro de una base de datos. |
CKRecordValue |
Los desarrolladores de aplicaciones no deben subclase esta interfaz, lo que proporciona una escritura segura para los objetos almacenados en una base de datos de CloudKit. No se admiten tipos de datos personalizados. |
CKRecordZone |
Permite organizar objetos relacionados CKRecord . De forma predeterminada, tanto la base de datos privada como la pública tienen una sola zona. |
CKRecordZoneID |
Identifica de forma única un objeto CKRecordZone dentro de una base de datos. |
CKRecordZoneNotification |
Una notificación push resultante de los cambios dentro de .CKRecordZone |
CKRecordZoneSubscription |
Una suscripción para registrar los cambios en la zona. |
CKReference |
Define una relación de 1:M entre CKRecord objetos dentro de un único CKRecordZone. |
CKServerChangeToken |
Objeto de solo lectura que identifica una versión de .CKRecord Al capturar datos actualizados, al pasar el token existente, el servidor solo permite que el servidor devuelva los cambios, lo que aumenta la eficacia. |
CKShare |
Representa un registro compartido. |
CKShareKeys |
Constantes usadas por varias clases de CloudKit. |
CKShareMetadata |
Representa los metadatos compartidos del registro compartido. |
CKShareParticipant |
Contiene datos para un participante de recurso compartido. |
CKSubscription |
Consulta persistente que realiza un seguimiento de los cambios en el servidor. (Consulte CKQueryNotification). |
CKUserIdentity |
Contiene información que se usa para buscar un usuario o usuarios. |
CKUserIdentityLookupInfo |
Contiene datos que se pueden usar para buscar un usuario. |
Interfaces
ICKRecordValue |
Interfaz que representa los métodos necesarios (si los hay) del protocolo CKRecordValue. |
Enumeraciones
CKAccountStatus |
Enumera los valores que indican si la cuenta de iCloud de un usuario está disponible. |
CKApplicationPermissions |
Enumera un valor que indica que otros usuarios de la aplicación pueden detectar el usuario actual por dirección de correo electrónico. |
CKApplicationPermissionStatus |
Enumera los estados que una aplicación puede tener al intentar obtener un permiso. |
CKDatabaseScope |
Enumera los valores que indican si una base de datos es privada, compartida o pública. |
CKErrorCode |
Enumera las condiciones de error de CloudKit. |
CKNotificationType |
Enumera los eventos que pueden generar una notificación push. |
CKOperationGroupTransferSize |
El espacio de nombres de CloudKit proporciona acceso a iCloud. |
CKQueryNotificationReason |
Enumera los eventos de almacenamiento persistentes que pueden desencadenar notificaciones del ciclo de vida de datos. |
CKQuerySubscriptionOptions |
Enumera la hora o las horas en que se CKSubscription desencadena una notificación. |
CKRecordSavePolicy |
Enumera las directivas que controlan cuándo o si se debe guardar un registro. |
CKRecordZoneCapabilities |
Enumera las operaciones especiales de las que es capaz una zona. |
CKReferenceAction |
Enumera los valores que controlan si una referencia debe eliminarse cuando se elimina su registro de destino. |
CKShareParticipantAcceptanceStatus |
Enumera las respuestas para compartir solicitudes de participación. |
CKShareParticipantPermission |
Enumera los permisos de recurso compartido de usuario. |
CKShareParticipantRole |
El espacio de nombres de CloudKit proporciona acceso a iCloud. |
CKShareParticipantType |
Enumera los tipos de participantes de recursos compartidos. |
CKSubscriptionOptions |
Enumera las marcas para controlar el comportamiento de las notificaciones push para las suscripciones basadas en consultas. |
CKSubscriptionType |
Enumera los tipos de suscripción. |
Delegados
CKAcceptPerShareCompletionHandler |
El espacio de nombres de CloudKit proporciona acceso a iCloud. |
CKDatabaseDeleteSubscriptionHandler |
Controlador de finalización para el DeleteSubscription(String, CKDatabaseDeleteSubscriptionHandler) método . |
CKDiscoverUserInfosCompletionHandler |
Los desarrolladores de aplicaciones pueden implementar este degate y asignarlo a la propiedad M:CloudKit.CKDiscoverUserInfosOperation.Complete* para procesar la información de usuario que se devuelve. |
CKFetchDatabaseChangesCompletionHandler |
El espacio de nombres de CloudKit proporciona acceso a iCloud. |
CKFetchPerShareMetadataHandler |
El espacio de nombres de CloudKit proporciona acceso a iCloud. |
CKFetchRecordChangesHandler |
Delegado para la AllChangesReported propiedad . |
CKFetchRecordsCompletedHandler |
Delegado para la Completed propiedad . |
CKFetchRecordZoneChangesFetchCompletedHandler |
El espacio de nombres de CloudKit proporciona acceso a iCloud. |
CKFetchRecordZoneChangesTokensUpdatedHandler |
El espacio de nombres de CloudKit proporciona acceso a iCloud. |
CKFetchRecordZoneChangesWithIDWasDeletedHandler |
El espacio de nombres de CloudKit proporciona acceso a iCloud. |
CKFetchSubscriptionsCompleteHandler |
Delegado para la Completed propiedad . |
CKFetchWebAuthTokenOperationHandler |
El espacio de nombres de CloudKit proporciona acceso a iCloud. |
CKMarkNotificationsReadHandler |
Delegado para la Completed propiedad . |
CKModifyRecordsOperationHandler |
Delegado para la Completed propiedad . |
CKModifyRecordZonesHandler |
Delegado para la Completed propiedad . |
CKModifySubscriptionsHandler |
Delegado para la Completed propiedad . |
CKRecordZoneCompleteHandler |
Delegado para la Completed propiedad . |
Comentarios
El espacio de nombres CloudKit permite a los desarrolladores de aplicaciones controlar el flujo de datos entre sus aplicaciones e iCloud. iCloud proporciona almacenamiento de datos del lado servidor, ambos "públicos" que se comparten entre todas las instancias de una aplicación o aplicaciones específicas y "privadas" que es única para un único usuario. El almacenamiento y el transporte de iCloud se cifran y sincronizan entre dispositivos Apple. CloudKit no proporciona persistencia del lado cliente ni almacenamiento en caché de datos: la funcionalidad de CloudKit solo está disponible mientras el usuario tiene una conexión activa a Internet.
La clase de nivel más alto de CloudKit es CKContainer. Un contenedor de CloudKit (a veces denominado en la documentación de Apple como un "contenedor de Ubiquity") es un almacén de información identificado con un nombre determinado. Apple aconseja usar un nombre de la forma "iCloud". {DNS inverso}. {appName}", por ejemplo, "iCloud.com.mycompany.MyApp". Los desarrolladores deben crear y configurar sus contenedores mediante el panel de iCloud, disponible mediante el portal para desarrolladores de Apple.
Un solo CKContainer puede contener datos públicos, que se comparten entre todas las instancias de la aplicación (consulte PublicCloudDatabase) y los datos privados, que contienen datos específicos del usuario (consulte PrivateCloudDatabase). Dentro de iCloud, los datos públicos se almacenan en el almacenamiento de iCloud de la aplicación mientras que los datos privados se almacenan en el almacenamiento privado de iCloud del usuario. El público CKDatabase está disponible para todos los usuarios conectados de la aplicación, tanto si han iniciado sesión en iCloud como si no. La privada CKDatabase es solo si el usuario ha iniciado sesión en iCloud. Los desarrolladores deben escribir su código de forma que reaccione correctamente a los cambios en el estado de inicio de sesión o conexión del usuario.
Estos objetos públicos y privados CKDatabase almacenan registros estructurados. Se representan mediante CKRecord objetos . Además de los datos de clave-valor similares al campo, estos registros pueden contener CKAsset objetos grandes directamente (recuperados con el contenedor CKRecord) o como referencias (lo que permite la recuperación diferida de los datos grandes).
Todas las CKRecord instancias se almacenan dentro de .CKRecordZone Es CKRecordZone algo parecido a una instancia de base de datos tradicional: puede contener varios CKRecord almacenes que pueden hacer referencia entre sí, pero no a almacenes en otras CKRecordZone instancias y CKRecordZone objetos se pueden usar para coordinar las operaciones atómicas en varios CKRecord almacenes. La similitud con una instancia de base de datos no es universal; Por ejemplo, un desarrollador puede usar M:CKDatabase.FetchRecordAsync(CKRecordID) para recuperar un elemento CKRecord directamente desde sin CKDatabase hacer referencia a la zona. El valor predeterminado CKRecordZone está disponible a través de P:CloudKit.CKRecordZone.DefaultRecordZone(). Los desarrolladores pueden crear zonas adicionales mediante el panel de CloudKit y usarlas para particionar sus datos lógicamente.
Las aplicaciones de CloudKit requieren un perfil de aprovisionamiento con el com.apple.developer.icloud-services
derecho y un identificador de lote específico de la aplicación (por ejemplo, "com.mycompany.CloudKitApp"). Los desarrolladores deben crear y configurar este perfil de aprovisionamiento.
A continuación se muestran algunos usos típicos de CloudKit que funcionan en registros únicos:
//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;
}