Compartir a través de


CloudKit Espacio de nombres

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;
}