CloudKit Spazio dei nomi

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