CloudKit Namespace
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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;
}