CloudKit Namespace

O namespace do CloudKit fornece acesso ao iCloud.

Classes

CKAcceptSharesOperation

Implementa uma operação que aceita registros compartilhados.

CKAsset

Um arquivo grande associado a um CKRecord objeto .

CKContainer

Encapsula o conteúdo associado a um aplicativo, incluindo dados privados compartilhados e por usuário.

CKContainer.Notifications

Notificação postada pela CKContainer classe .

CKDatabase

Contém dados em um CKContainer. Um público CKDatabase fornece dados compartilhados, um banco de dados privado contém os dados do usuário atual.

CKDatabaseNotification

Uma notificação sobre a atividade do banco de dados.

CKDatabaseOperation

Classe abstrata para operações em um CKDatabase.

CKDatabaseSubscription

Uma assinatura de banco de dados.

CKDiscoverAllContactsOperation

Um CKOperation que recupera as IDs de todos os contatos detectáveis do usuário do aplicativo.

CKDiscoverAllUserIdentitiesOperation

Uma operação que obtém todos os usuários detectáveis no catálogo de endereços do sistema.

CKDiscoveredUserInfo

Informações sobre um usuário. Retornado por um CKDiscoverAllContactsOperation.

CKDiscoverUserIdentitiesOperation

Operação que localiza usuários que correspondem a um critério.

CKDiscoverUserInfosOperation

Um CKOperation que recupera as IDs de usuários detectáveis cujos endereços de email ou IDs de registro já são conhecidos pelo desenvolvimento do aplicativo.

CKErrorCodeExtensions

Métodos de extensão para a enumeração CloudKit.CKErrorCode.

CKErrorFields

Contém constantes de erro usadas pelo CloudKit.

CKFetchDatabaseChangesOperation

Uma operação que busca alterações de banco de dados.

CKFetchNotificationChangesOperation

Um CKOperation que ret.. /.. /summary_set.sh CKFetchNotificationChangesOperation A

CKFetchRecordChangesOperation

Um CKDatabaseOperation que recupera dados sobre objetos alterados ou excluídos CKRecord .

CKFetchRecordsOperation

Um CKDatabaseOperation que recupera objetos específicos CKRecord .

CKFetchRecordZoneChangesConfiguration

O namespace do CloudKit fornece acesso ao iCloud.

CKFetchRecordZoneChangesOperation

O namespace do CloudKit fornece acesso ao iCloud.

CKFetchRecordZoneChangesOptions

Contém opções que controlam como as alterações de zona de registro são buscadas.

CKFetchRecordZonesOperation

Um CKDatabaseOperation que recupera CKRecordZone objetos do iCloud.

CKFetchShareMetadataOperation

Uma operação que busca metadados compartilhados para vários compartilhamentos.

CKFetchShareParticipantsOperation

Uma operação que busca os participantes compartilhados para registros compartilhados.

CKFetchSubscriptionsOperation

Um CKDatabaseOperation que recupera CKSubscription objetos do iCloud.

CKFetchWebAuthTokenOperation

Operação que retorna um token de autenticação da Web para um token de API especificado do Painel do CloudKit.

CKLocationSortDescriptor

Classifica registros com base em sua distância do local especificado.

CKMarkNotificationsReadOperation

Marca as notificações por push como lidas. Normalmente usado por aplicativos que usam notificações por push para controlar alterações de registro.

CKModifyBadgeOperation

Um CKOperation que modifica a notificação do ícone do aplicativo, seja no dispositivo atual ou em todos os dispositivos do usuário.

CKModifyRecordsOperation

Um CKDatabaseOperation que confirma alterações em um ou mais CKRecord objetos.

CKModifyRecordZonesOperation

Um CKDatabaseOperation que confirma alterações em zonas de registro.

CKModifySubscriptionsOperation

Um CKDatabaseOperation que confirma alterações em um ou mais CKSubscription objetos.

CKNotification

Uma notificação por push enviada ao aplicativo.

CKNotificationID

Identifica exclusivamente uma notificação por push enviada de um contêiner.

CKNotificationInfo

Especifica o tipo de notificações por push geradas quando a condição de gatilho é atendida.

CKOperation

Classe base abstrata para operações executadas no banco de dados do CloudKit.

CKOperationConfiguration

Configura o comportamento de uma operação do CloudKit.

CKOperationGroup

Representa um grupo em lote de operações do CloudKit.

CKQuery

Especifica uma consulta no banco de dados do CloudKit.

CKQueryCursor

Mantém o ponto de parada atual no conjunto de resultados de um CKQuery.

CKQueryNotification

Uma notificação por push gerada por um CKSubscription objeto .

CKQueryOperation

Um CKDatabaseOperation que executa um CKQuery.

CKQuerySubscription

Permite que os desenvolvedores criem notificações com base em uma consulta.

CKRecord

Um dicionário de pares Key-Value que estruturam dados no CloudKit.

CKRecordID

Identifica exclusivamente um CKRecord dentro de um banco de dados.

CKRecordValue

Os desenvolvedores de aplicativos não devem subclasse dessa interface, que fornece digitação forte para objetos armazenados em um banco de dados do CloudKit. Não há suporte para tipos de dados personalizados.

CKRecordZone

Permite que objetos relacionados CKRecord sejam organizados. Por padrão, o banco de dados público e privado tem uma única zona.

CKRecordZoneID

Identifica exclusivamente um CKRecordZone dentro de um banco de dados.

CKRecordZoneNotification

Uma notificação por push resultante de alterações em um CKRecordZone.

CKRecordZoneSubscription

Uma assinatura para registrar alterações na zona.

CKReference

Define uma relação de 1:M entre CKRecord objetos em um único CKRecordZone.

CKServerChangeToken

Um objeto somente leitura que identifica uma versão de um CKRecord. Ao buscar dados atualizados, passar o token existente permite que o servidor retorne apenas as alterações, aumentando a eficiência.

CKShare

Representa um registro compartilhado.

CKShareKeys

Constantes usadas por várias classes do CloudKit.

CKShareMetadata

Representa metadados compartilhados de registro compartilhado.

CKShareParticipant

Contém dados para um participante do compartilhamento.

CKSubscription

Uma consulta persistente que rastreia as alterações no servidor. (Consulte CKQueryNotification.)

CKUserIdentity

Contém informações usadas para pesquisar um usuário ou usuários.

CKUserIdentityLookupInfo

Contém dados que podem ser usados para pesquisar um usuário.

Interfaces

ICKRecordValue

Interface que representa os métodos necessários (se houver) do protocolo CKRecordValue.

Enumerações

CKAccountStatus

Enumera valores que indicam se a conta do iCloud de um usuário está disponível.

CKApplicationPermissions

Enumera um valor que indica que outros usuários do aplicativo podem descobrir o usuário atual por endereço de email.

CKApplicationPermissionStatus

Enumera os estados que um aplicativo pode ter ao tentar obter uma permissão.

CKDatabaseScope

Enumera valores que informam se um banco de dados é privado, compartilhado ou público.

CKErrorCode

Enumera as condições de erro do CloudKit.

CKNotificationType

Enumera os eventos que podem gerar uma notificação por push.

CKOperationGroupTransferSize

O namespace do CloudKit fornece acesso ao iCloud.

CKQueryNotificationReason

Enumera os eventos de armazenamento persistentes que podem disparar notificações de ciclo de vida de dados.

CKQuerySubscriptionOptions

Enumera a hora ou as vezes em que um CKSubscription dispara uma notificação.

CKRecordSavePolicy

Enumera políticas que controlam quando ou se um registro deve ser salvo.

CKRecordZoneCapabilities

Enumera as operações especiais das quais uma zona é capaz.

CKReferenceAction

Enumera valores que controlam se uma referência deve se excluir quando seu registro de destino é excluído.

CKShareParticipantAcceptanceStatus

Enumera respostas para compartilhar solicitações de participação.

CKShareParticipantPermission

Enumera permissões de compartilhamento de usuário.

CKShareParticipantRole

O namespace do CloudKit fornece acesso ao iCloud.

CKShareParticipantType

Enumera tipos de participantes de compartilhamento.

CKSubscriptionOptions

Enumera sinalizadores para controlar o comportamento de notificação por push para assinaturas baseadas em consulta.

CKSubscriptionType

Enumera tipos de assinatura.

Delegados

CKAcceptPerShareCompletionHandler

O namespace do CloudKit fornece acesso ao iCloud.

CKDatabaseDeleteSubscriptionHandler

Manipulador de conclusão para o DeleteSubscription(String, CKDatabaseDeleteSubscriptionHandler) método .

CKDiscoverUserInfosCompletionHandler

Os desenvolvedores de aplicativos podem implementar esse delgate e atribuí-lo à propriedade M:CloudKit.CKDiscoverUserInfosOperation.Complete* para processar as informações do usuário retornadas.

CKFetchDatabaseChangesCompletionHandler

O namespace do CloudKit fornece acesso ao iCloud.

CKFetchPerShareMetadataHandler

O namespace do CloudKit fornece acesso ao iCloud.

CKFetchRecordChangesHandler

Delegar para a AllChangesReported propriedade .

CKFetchRecordsCompletedHandler

Delegar para a Completed propriedade .

CKFetchRecordZoneChangesFetchCompletedHandler

O namespace do CloudKit fornece acesso ao iCloud.

CKFetchRecordZoneChangesTokensUpdatedHandler

O namespace do CloudKit fornece acesso ao iCloud.

CKFetchRecordZoneChangesWithIDWasDeletedHandler

O namespace do CloudKit fornece acesso ao iCloud.

CKFetchSubscriptionsCompleteHandler

Delegar para a Completed propriedade .

CKFetchWebAuthTokenOperationHandler

O namespace do CloudKit fornece acesso ao iCloud.

CKMarkNotificationsReadHandler

Delegar para a Completed propriedade .

CKModifyRecordsOperationHandler

Delegar para a Completed propriedade .

CKModifyRecordZonesHandler

Delegar para a Completed propriedade .

CKModifySubscriptionsHandler

Delegar para a Completed propriedade .

CKRecordZoneCompleteHandler

Delegar para a Completed propriedade .

Comentários

O namespace do CloudKit permite que os desenvolvedores de aplicativos controlem o fluxo de dados entre seus aplicativos e o iCloud. O iCloud fornece armazenamento de dados do lado do servidor, tanto "público" que é compartilhado entre todas as instâncias de um aplicativo ou aplicativos específicos e "privado" que é exclusivo para um único usuário. O armazenamento e o transporte do iCloud são criptografados e sincronizados entre dispositivos Apple. O CloudKit não fornece persistência do lado do cliente ou cache de dados – a funcionalidade do CloudKit só está disponível enquanto o usuário tem uma conexão de Internet ativa.

A classe de nível mais alto no CloudKit é CKContainer. Um contêiner do CloudKit (às vezes conhecido na documentação da Apple como um "contêiner Ubiquity") é um repositório de informações identificado com um nome específico. A Apple aconselha usar um nome do formato "iCloud. {DNS reverso}. {appName}", por exemplo, "iCloud.com.mycompany.MyApp". Os desenvolvedores devem criar e configurar seus contêineres usando o Painel do iCloud, disponível por meio do portal do desenvolvedor da Apple.

Um único CKContainer pode conter dados públicos, que são compartilhados entre todas as instâncias do aplicativo (consulte PublicCloudDatabase) e dados privados, que contêm dados específicos do usuário (consulte PrivateCloudDatabase). No iCloud, os dados públicos são armazenados no armazenamento do iCloud do aplicativo enquanto os dados privados são armazenados no armazenamento privado do iCloud do usuário. O público CKDatabase está disponível para todos os usuários conectados do aplicativo, independentemente de estarem ou não conectados ao iCloud. O privado CKDatabase será somente se o usuário estiver conectado ao iCloud. Os desenvolvedores devem escrever seu código de modo que ele reaja normalmente às alterações no status de logon ou conexão do usuário.

Esses objetos públicos e privados CKDatabase armazenam registros estruturados. Eles são representados por CKRecord objetos . Além dos dados de chave-valor semelhantes a um campo, esses registros podem conter CKAsset objetos grandes diretamente (recuperados com o que contém CKRecord) ou como referências (permitindo a recuperação lenta dos dados grandes).

Todas as CKRecord instâncias são armazenadas em um CKRecordZone. Um CKRecordZone é algo como uma instância de banco de dados tradicional: pode conter vários CKRecord repositórios que podem se referir uns aos outros, mas não para armazenamentos em outras CKRecordZone instâncias e CKRecordZone objetos podem ser usados para coordenar operações atômicas em vários CKRecord repositórios. A similaridade com uma instância de banco de dados não é universal; por exemplo, um desenvolvedor pode usar M:CKDatabase.FetchRecordAsync(CKRecordID) para recuperar um CKRecord diretamente do CKDatabase sem se referir à zona. O padrão CKRecordZone está disponível por meio de P:CloudKit.CKRecordZone.DefaultRecordZone(). Os desenvolvedores podem criar zonas adicionais usando o painel do CloudKit e usá-las para particionar seus dados logicamente.

Os aplicativos do CloudKit exigem um perfil de provisionamento com o com.apple.developer.icloud-services direito e um Identificador de Pacote específico do aplicativo (por exemplo, "com.mycompany.CloudKitApp"). Os desenvolvedores devem criar e configurar esse perfil de provisionamento.

O seguinte demonstra alguns usos típicos do CloudKit que funcionam em 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;
}