CloudKit Spazio dei nomi

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

Classi

Nome Descrizione
CKAcceptSharesOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKAllowedSharingOptions

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKAsset

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKContainer

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKContainer.Notifications

Notifiche inviate dalla CKContainer classe .

CKDatabase

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKDatabaseNotification

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKDatabaseOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKDatabaseSubscription

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKDiscoverAllUserIdentitiesOperation

Operazione che ottiene tutti gli utenti individuabili nella rubrica del sistema.

CKDiscoverUserIdentitiesOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKErrorCodeExtensions

Metodi di estensione per l'enumerazione CKErrorCode .

CKErrorFields

Contiene le costanti di errore usate da CloudKit.

CKFetchDatabaseChangesOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKFetchNotificationChangesOperation

Oggetto CKOperation che recupera le modifiche delle notifiche.

CKFetchRecordChangesOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKFetchRecordsOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKFetchRecordZoneChangesConfiguration

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKFetchRecordZoneChangesOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKFetchRecordZoneChangesOptions

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKFetchRecordZonesOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKFetchShareMetadataOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKFetchShareParticipantsOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKFetchSubscriptionsOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKFetchWebAuthTokenOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKLocationSortDescriptor

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

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 il badge dell'icona dell'app, nel dispositivo corrente o in tutti i dispositivi dell'utente.

CKModifyRecordsOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKModifyRecordZonesOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKModifySubscriptionsOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKNotification

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKNotificationID

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKNotificationInfo

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKOperationConfiguration

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKOperationGroup

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKQuery

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKQueryCursor

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKQueryNotification

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKQueryOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKQuerySubscription

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKRecord

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKRecordID

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKRecordValue

Si tratta di una classe che implementa l'interfaccia ICKRecordValue (per il protocollo CKRecordValue).

Sottoclasse questa classe per creare facilmente un tipo che implementa il protocollo.

Un'alternativa consiste nel creare una sottoclasse di NSObject e quindi implementare l'interfaccia ICKRecordValue.

CKRecordZone

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKRecordZoneID

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKRecordZoneNotification

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKRecordZoneSubscription

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKReference

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKServerChangeToken

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKShare

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKShareAccessRequester

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKShareBlockedIdentity

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKShareKeys

Costanti usate da varie classi CloudKit.

CKShareMetadata

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKShareParticipant

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKShareRequestAccessOperation

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSubscription

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngine

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineAccountChangeEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineConfiguration

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineDelegate

Si tratta di una classe che implementa l'interfaccia ICKSyncEngineDelegate (per il protocollo CKSyncEngineDelegate).

Sottoclasse questa classe per creare facilmente un tipo che implementa il protocollo.

Un'alternativa consiste nel creare una sottoclasse di NSObject e quindi implementare l'interfaccia ICKSyncEngineDelegate.

CKSyncEngineDelegate_Extensions

Metodi di estensione per l'interfaccia ICKSyncEngineDelegate per supportare tutti i metodi del protocollo CKSyncEngineDelegate.

CKSyncEngineDidFetchChangesEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineDidFetchRecordZoneChangesEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineDidSendChangesEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineFailedRecordSave

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineFailedZoneSave

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineFetchChangesContext

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineFetchChangesOptions

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineFetchChangesScope

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineFetchedDatabaseChangesEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineFetchedRecordDeletion

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineFetchedRecordZoneChangesEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineFetchedZoneDeletion

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEnginePendingDatabaseChange

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEnginePendingRecordZoneChange

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEnginePendingZoneDelete

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEnginePendingZoneSave

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineRecordZoneChangeBatch

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineSendChangesContext

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineSendChangesOptions

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineSendChangesScope

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineSentDatabaseChangesEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineSentRecordZoneChangesEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineState

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineStateSerialization

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineStateUpdateEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineWillFetchChangesEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineWillFetchRecordZoneChangesEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineWillSendChangesEvent

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSystemSharingUIObserver

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKUserIdentity

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKUserIdentityLookupInfo

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

Interfacce

Nome Descrizione
ICKRecordValue

Questa interfaccia rappresenta il protocollo CKRecordValueObjective-C .

ICKSyncEngineDelegate

Questa interfaccia rappresenta il protocollo CKSyncEngineDelegateObjective-C .

Enumerazioni

Nome Descrizione
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 quando si tenta 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 l'ora 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 una zona è in grado di eseguire.

CKRecordZoneEncryptionScope

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKReferenceAction

Enumera i valori che controllano se un riferimento deve essere eliminato quando viene eliminato il 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.

CKSharingParticipantAccessOption

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSharingParticipantPermissionOption

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSubscriptionType

Enumera i tipi di sottoscrizione.

CKSyncEngineAccountChangeType

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineEventType

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEnginePendingDatabaseChangeType

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEnginePendingRecordZoneChangeType

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineSyncReason

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKSyncEngineZoneDeletionReason

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

Delegati

Nome Descrizione
CKAcceptPerShareCompletionHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKDatabaseDeleteSubscriptionHandler

Gestore di completamento per il DeleteSubscription(String, CKDatabaseDeleteSubscriptionHandler) metodo .

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.

CKFetchRecordZoneChangesRecordWasChangedHandler

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.

CKFetchShareParticipantsOperationPerShareParticipantCompletionHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKFetchSubscriptionsCompleteHandler

Delegato per la Completed proprietà .

CKFetchSubscriptionsPerSubscriptionCompletionHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKFetchWebAuthTokenOperationHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKMarkNotificationsReadHandler

Delegato per la Completed proprietà .

CKModifyRecordsOperationHandler

Delegato per la Completed proprietà .

CKModifyRecordsOperationPerRecordDeleteHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKModifyRecordsOperationPerRecordSaveHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKModifyRecordZonesHandler

Delegato per la Completed proprietà .

CKModifyRecordZonesPerRecordZoneDeleteHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKModifyRecordZonesPerRecordZoneSaveHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKModifySubscriptionsHandler

Delegato per la Completed proprietà .

CKModifySubscriptionsPerSubscriptionDeleteHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKModifySubscriptionsPerSubscriptionSaveHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKQueryOperationRecordMatchedHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKRecordZoneCompleteHandler

Delegato per la Completed proprietà .

CKRecordZonePerRecordZoneCompletionHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKShareRequestAccessOperationPerShareAccessRequestCompletionHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

CKShareRequestAccessOperationShareRequestAccessCompletionHandler

Lo spazio dei nomi CloudKit consente l'accesso a iCloud.

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 di 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 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 è disponibile solo se l'utente ha effettuato l'accesso a iCloud. Gli sviluppatori devono scrivere il codice in modo che reagisca correttamente alle modifiche apportate allo stato di accesso o connessione dell'utente.

Questi oggetti pubblici e privati CKDatabase archiviano record strutturati. 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 contenitore 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 è 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 del database non è universale; ad esempio, uno sviluppatore può usare FetchRecordAsync per recuperare un oggetto CKRecord direttamente da CKDatabase senza fare riferimento alla zona. Il valore predefinito CKRecordZone è disponibile tramite DefaultRecordZone. Gli sviluppatori possono creare zone aggiuntive usando il dashboard 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 tale profilo di provisioning.

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