CloudKit Spazio dei nomi
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Lo spazio dei nomi CloudKit consente l'accesso a iCloud.
Classi
CKAcceptSharesOperation |
Implementa un'operazione che accetta record condivisi. |
CKAsset |
File di grandi dimensioni associato a un CKRecord oggetto . |
CKContainer |
Incapsula il contenuto associato a un'app, inclusi i dati privati condivisi e per utente. |
CKContainer.Notifications |
Notifica inviata dalla CKContainer classe . |
CKDatabase |
Contiene dati all'interno di un oggetto CKContainer. Un database pubblico CKDatabase fornisce dati condivisi, un database privato contiene i dati dell'utente corrente. |
CKDatabaseNotification |
Notifica sull'attività del database. |
CKDatabaseOperation |
Classe astratta per le operazioni su un oggetto CKDatabase. |
CKDatabaseSubscription |
Una sottoscrizione di database. |
CKDiscoverAllContactsOperation |
Oggetto CKOperation che recupera gli ID di tutti i contatti individuabili dell'utente dell'app. |
CKDiscoverAllUserIdentitiesOperation |
Operazione che ottiene tutti gli utenti individuabili nella rubrica del sistema. |
CKDiscoveredUserInfo |
Informazioni su un utente. Restituito da un oggetto CKDiscoverAllContactsOperation. |
CKDiscoverUserIdentitiesOperation |
Operazione che trova gli utenti che corrispondono a un criterio. |
CKDiscoverUserInfosOperation |
Oggetto CKOperation che recupera gli ID degli utenti individuabili i cui indirizzi di posta elettronica o ID record sono già noti allo sviluppatore dell'app. |
CKErrorCodeExtensions |
Metodi di estensione per l'enumerazione CloudKit.CKErrorCode. |
CKErrorFields |
Contiene le costanti di errore usate da CloudKit. |
CKFetchDatabaseChangesOperation |
Operazione che recupera le modifiche apportate al database. |
CKFetchNotificationChangesOperation |
Oggetto CKOperation che ret.. /.. /summary_set.sh CKFetchNotificationChangesOperation A |
CKFetchRecordChangesOperation |
Oggetto CKDatabaseOperation che recupera i dati sugli oggetti modificati o eliminati CKRecord . |
CKFetchRecordsOperation |
Oggetto CKDatabaseOperation che recupera oggetti specifici CKRecord . |
CKFetchRecordZoneChangesConfiguration |
Lo spazio dei nomi CloudKit consente l'accesso a iCloud. |
CKFetchRecordZoneChangesOperation |
Lo spazio dei nomi CloudKit consente l'accesso a iCloud. |
CKFetchRecordZoneChangesOptions |
Contiene opzioni che controllano la modalità di recupero delle modifiche della zona dei record. |
CKFetchRecordZonesOperation |
Oggetto CKDatabaseOperation che recupera oggetti CKRecordZone da iCloud. |
CKFetchShareMetadataOperation |
Operazione che recupera i metadati condivisi per più condivisioni. |
CKFetchShareParticipantsOperation |
Operazione che recupera i partecipanti condivisi per i record condivisi. |
CKFetchSubscriptionsOperation |
Oggetto CKDatabaseOperation che recupera oggetti CKSubscription da iCloud. |
CKFetchWebAuthTokenOperation |
Operazione che restituisce un token di autenticazione Web per un token API specificato dal dashboard di CloudKit. |
CKLocationSortDescriptor |
Ordina i record in base alla distanza dalla posizione specificata. |
CKMarkNotificationsReadOperation |
Contrassegna le notifiche push come lette. In genere usato dalle app che usano notifiche push per tenere traccia delle modifiche. |
CKModifyBadgeOperation |
Oggetto CKOperation che modifica la notifica dell'icona dell'app, nel dispositivo corrente o in tutti i dispositivi dell'utente. |
CKModifyRecordsOperation |
Oggetto CKDatabaseOperation che esegue il commit delle modifiche apportate a uno o più CKRecord oggetti. |
CKModifyRecordZonesOperation |
Oggetto CKDatabaseOperation che esegue il commit delle modifiche apportate alle zone di record. |
CKModifySubscriptionsOperation |
Oggetto CKDatabaseOperation che esegue il commit delle modifiche apportate a uno o più CKSubscription oggetti. |
CKNotification |
Notifica push inviata all'app. |
CKNotificationID |
Identifica in modo univoco una notifica push inviata da un contenitore. |
CKNotificationInfo |
Specifica il tipo di notifiche push generate quando viene soddisfatta la condizione del trigger. |
CKOperation |
Classe base astratta per le operazioni eseguite sul database CloudKit. |
CKOperationConfiguration |
Configura il comportamento di un'operazione CloudKit. |
CKOperationGroup |
Rappresenta un gruppo in batch di operazioni CloudKit. |
CKQuery |
Specifica una query sul database CloudKit. |
CKQueryCursor |
Contiene il punto di arresto corrente nel set di risultati di un oggetto CKQuery. |
CKQueryNotification |
Notifica push generata da un CKSubscription oggetto . |
CKQueryOperation |
Oggetto CKDatabaseOperation che esegue un oggetto CKQuery. |
CKQuerySubscription |
Consente agli sviluppatori di creare notifiche in base a una query. |
CKRecord |
Dizionario di coppie di Key-Value che strutturano i dati all'interno di CloudKit. |
CKRecordID |
Identifica in modo univoco un CKRecord oggetto all'interno di un database. |
CKRecordValue |
Gli sviluppatori di app non devono sottoclasse questa interfaccia, che fornisce una digitazione avanzata per gli oggetti archiviati in un database CloudKit. I tipi di dati personalizzati non sono supportati. |
CKRecordZone |
Consente di organizzare gli oggetti correlati CKRecord . Per impostazione predefinita, sia il database privato che quello pubblico hanno una singola zona. |
CKRecordZoneID |
Identifica in modo univoco un CKRecordZone oggetto all'interno di un database. |
CKRecordZoneNotification |
Notifica push risultante dalle modifiche all'interno di un oggetto CKRecordZone. |
CKRecordZoneSubscription |
Una sottoscrizione per registrare le modifiche apportate alla zona. |
CKReference |
Definisce una relazione 1:M tra CKRecord oggetti all'interno di un singolo CKRecordZoneoggetto . |
CKServerChangeToken |
Oggetto di sola lettura che identifica una versione di un oggetto CKRecord. Quando si recuperano dati aggiornati, il passaggio del token esistente consente al server di restituire solo le modifiche, aumentando l'efficienza. |
CKShare |
Rappresenta un record condiviso. |
CKShareKeys |
Costanti usate da varie classi CloudKit. |
CKShareMetadata |
Rappresenta i metadati condivisi dei record condivisi. |
CKShareParticipant |
Contiene i dati per un partecipante alla condivisione. |
CKSubscription |
Query persistente che tiene traccia delle modifiche nel server. Per informazioni, vedere CKQueryNotification. |
CKUserIdentity |
Contiene informazioni utilizzate per cercare un utente o un utente. |
CKUserIdentityLookupInfo |
Contiene dati che possono essere usati per cercare un utente. |
Interfacce
ICKRecordValue |
Interfaccia che rappresenta i metodi obbligatori (se presenti) del protocollo CKRecordValue. |
Enumerazioni
CKAccountStatus |
Enumera i valori che indicano se l'account iCloud di un utente è disponibile. |
CKApplicationPermissions |
Enumera un valore che indica che altri utenti dell'app possono individuare l'utente corrente in base all'indirizzo di posta elettronica. |
CKApplicationPermissionStatus |
Enumera gli stati che un'applicazione può avere durante il tentativo di ottenere un'autorizzazione. |
CKDatabaseScope |
Enumera i valori che indicano se un database è privato, condiviso o pubblico. |
CKErrorCode |
Enumera le condizioni di errore di CloudKit. |
CKNotificationType |
Enumera gli eventi che possono generare una notifica push. |
CKOperationGroupTransferSize |
Lo spazio dei nomi CloudKit consente l'accesso a iCloud. |
CKQueryNotificationReason |
Enumera gli eventi di archiviazione permanente che possono attivare le notifiche del ciclo di vita dei dati. |
CKQuerySubscriptionOptions |
Enumera l'ora o gli orari in cui viene CKSubscription attivata una notifica. |
CKRecordSavePolicy |
Enumera i criteri che controllano quando o se deve essere salvato un record. |
CKRecordZoneCapabilities |
Enumera le operazioni speciali di cui è in grado una zona. |
CKReferenceAction |
Enumera i valori che controllano se un riferimento deve essere eliminato quando viene eliminato il relativo record di destinazione. |
CKShareParticipantAcceptanceStatus |
Enumera le risposte per condividere le richieste di partecipazione. |
CKShareParticipantPermission |
Enumera le autorizzazioni di condivisione utente. |
CKShareParticipantRole |
Lo spazio dei nomi CloudKit consente l'accesso a iCloud. |
CKShareParticipantType |
Enumera i tipi di partecipanti di condivisione. |
CKSubscriptionOptions |
Enumera i flag per controllare il comportamento delle notifiche push per le sottoscrizioni basate su query. |
CKSubscriptionType |
Enumera i tipi di sottoscrizione. |
Delegati
CKAcceptPerShareCompletionHandler |
Lo spazio dei nomi CloudKit consente l'accesso a iCloud. |
CKDatabaseDeleteSubscriptionHandler |
Gestore di completamento per il DeleteSubscription(String, CKDatabaseDeleteSubscriptionHandler) metodo . |
CKDiscoverUserInfosCompletionHandler |
Gli sviluppatori di applicazioni possono implementare questo delgate e assegnarlo alla proprietà M:CloudKit.CKDiscoverUserInfosOperation.Complete* per elaborare le informazioni utente restituite. |
CKFetchDatabaseChangesCompletionHandler |
Lo spazio dei nomi CloudKit consente l'accesso a iCloud. |
CKFetchPerShareMetadataHandler |
Lo spazio dei nomi CloudKit consente l'accesso a iCloud. |
CKFetchRecordChangesHandler |
Delegato per la AllChangesReported proprietà . |
CKFetchRecordsCompletedHandler |
Delegato per la Completed proprietà . |
CKFetchRecordZoneChangesFetchCompletedHandler |
Lo spazio dei nomi CloudKit consente l'accesso a iCloud. |
CKFetchRecordZoneChangesTokensUpdatedHandler |
Lo spazio dei nomi CloudKit consente l'accesso a iCloud. |
CKFetchRecordZoneChangesWithIDWasDeletedHandler |
Lo spazio dei nomi CloudKit consente l'accesso a iCloud. |
CKFetchSubscriptionsCompleteHandler |
Delegato per la Completed proprietà . |
CKFetchWebAuthTokenOperationHandler |
Lo spazio dei nomi CloudKit consente l'accesso a iCloud. |
CKMarkNotificationsReadHandler |
Delegato per la Completed proprietà . |
CKModifyRecordsOperationHandler |
Delegato per la Completed proprietà . |
CKModifyRecordZonesHandler |
Delegato per la Completed proprietà . |
CKModifySubscriptionsHandler |
Delegato per la Completed proprietà . |
CKRecordZoneCompleteHandler |
Delegato per la Completed proprietà . |
Commenti
Lo spazio dei nomi CloudKit consente agli sviluppatori di applicazioni di controllare il flusso di dati tra le applicazioni e iCloud. iCloud fornisce l'archiviazione dei dati sul lato server, sia "pubblica" condivisa tra tutte le istanze di un'applicazione o applicazioni specifiche e "private" univoca per un singolo utente. L'archiviazione e il trasporto iCloud vengono crittografati e sincronizzati tra i dispositivi Apple. CloudKit non fornisce la persistenza sul lato client o la memorizzazione nella cache dei dati. La funzionalità CloudKit è disponibile solo se l'utente ha una connessione Internet attiva.
La classe di livello più alto in CloudKit è CKContainer. Un contenitore CloudKit (talvolta indicato nella documentazione apple come "contenitore Ubiquity") è un archivio informazioni identificato con un nome specifico. Apple consiglia di usare un nome del formato "iCloud. {DNS inverso}. {appName}", ad esempio, "iCloud.com.mycompany.MyApp". Gli sviluppatori devono creare e configurare i propri contenitori usando il dashboard iCloud, disponibile tramite il portale per sviluppatori Apple.
Un singolo CKContainer può contenere entrambi i dati pubblici, condivisi tra tutte le istanze dell'app (vedere PublicCloudDatabase) e i dati privati, che contengono dati specifici dell'utente (vedere PrivateCloudDatabase). All'interno di iCloud, i dati pubblici vengono archiviati nell'archiviazione iCloud dell'app mentre i dati privati vengono archiviati nell'archiviazione iCloud privata dell'utente. Il pubblico CKDatabase è disponibile per tutti gli utenti connessi dell'app, indipendentemente dal fatto che siano connessi a iCloud. Il privato CKDatabase è solo se l'utente ha effettuato l'accesso a iCloud. Gli sviluppatori devono scrivere il codice in modo che reagisca normalmente alle modifiche apportate allo stato di accesso o connessione dell'utente.
Questi oggetti pubblici e privati CKDatabase archiviano record strutturati. Questi oggetti sono rappresentati da CKRecord oggetti . Oltre ai dati chiave-valore simili al campo, questi record possono contenere CKAsset oggetti di grandi dimensioni direttamente (recuperati con l'oggetto contenente CKRecord) o come riferimenti (consentendo il recupero differita dei dati di grandi dimensioni).
Tutte le CKRecord istanze vengono archiviate all'interno di un oggetto CKRecordZone. Un CKRecordZone oggetto è simile a un'istanza di database tradizionale: può contenere più CKRecord archivi che possono fare riferimento l'uno all'altro, ma non archiviare in altre CKRecordZone istanze e CKRecordZone oggetti possono essere usati per coordinare le operazioni atomiche tra più CKRecord archivi. La somiglianza con un'istanza di database non è universale; Ad esempio, uno sviluppatore può usare M:CKDatabase.FetchRecordAsync(CKRecordID) per recuperare un oggetto CKRecord direttamente da CKDatabase senza fare riferimento alla zona. Il valore predefinito CKRecordZone è disponibile tramite P:CloudKit.CKRecordZone.DefaultRecordZone(). Gli sviluppatori possono creare zone aggiuntive usando il dashboard di CloudKit e usarle per partizionare i dati in modo logico.
Le app CloudKit richiedono un profilo di provisioning con il com.apple.developer.icloud-services
diritto e un identificatore bundle specifico dell'app,ad esempio "com.mycompany.CloudKitApp". Gli sviluppatori devono creare e configurare un profilo di provisioning di questo tipo.
Di seguito vengono illustrati alcuni usi tipici di CloudKit che funzionano su singoli record:
//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;
}