CloudKit Namespace

Der CloudKit-Namespace bietet Zugriff auf iCloud.

Klassen

Name Beschreibung
CKAcceptSharesOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKAllowedSharingOptions

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKAsset

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKContainer

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKContainer.Notifications

Von der CKContainer Klasse gepostete Benachrichtigungen.

CKDatabase

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKDatabaseNotification

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKDatabaseOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKDatabaseSubscription

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKDiscoverAllUserIdentitiesOperation

Ein Vorgang, der alle auffindbaren Benutzer im Adressbuch des Systems abruft.

CKDiscoverUserIdentitiesOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKErrorCodeExtensions

Erweiterungsmethoden für die CKErrorCode Enumeration.

CKErrorFields

Enthält Fehlerkonstanten, die von CloudKit verwendet werden.

CKFetchDatabaseChangesOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchNotificationChangesOperation

Eine CKOperation , die Benachrichtigungsänderungen abruft.

CKFetchRecordChangesOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchRecordsOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchRecordZoneChangesConfiguration

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchRecordZoneChangesOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchRecordZoneChangesOptions

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchRecordZonesOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchShareMetadataOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchShareParticipantsOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchSubscriptionsOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchWebAuthTokenOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKLocationSortDescriptor

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKMarkNotificationsReadOperation

Kennzeichnet Pushbenachrichtigungen als gelesen. Wird in der Regel von Apps verwendet, die Pushbenachrichtigungen zum Nachverfolgen von Datensatzänderungen verwenden.

CKModifyBadgeOperation

Ein CKOperation Signal, das das Symbol der App ändert, entweder auf dem aktuellen Gerät oder auf allen Geräten des Benutzers.

CKModifyRecordsOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKModifyRecordZonesOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKModifySubscriptionsOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKNotification

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKNotificationID

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKNotificationInfo

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKOperationConfiguration

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKOperationGroup

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKQuery

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKQueryCursor

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKQueryNotification

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKQueryOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKQuerySubscription

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKRecord

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKRecordID

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKRecordValue

Dies ist eine Klasse, die die Schnittstelle ICKRecordValue implementiert (für das Protokoll CKRecordValue).

Unterklasse dieser Klasse zum einfachen Erstellen eines Typs, der das Protokoll implementiert.

Eine Alternative besteht darin, eine Unterklasse von NSObject und dann die Schnittstelle ICKRecordValuezu erstellen.

CKRecordZone

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKRecordZoneID

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKRecordZoneNotification

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKRecordZoneSubscription

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKReference

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKServerChangeToken

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKShare

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKShareAccessRequester

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKShareBlockedIdentity

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKShareKeys

Konstanten, die von verschiedenen CloudKit-Klassen verwendet werden.

CKShareMetadata

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKShareParticipant

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKShareRequestAccessOperation

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSubscription

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngine

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineAccountChangeEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineConfiguration

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineDelegate

Dies ist eine Klasse, die die Schnittstelle ICKSyncEngineDelegate implementiert (für das Protokoll CKSyncEngineDelegate).

Unterklasse dieser Klasse zum einfachen Erstellen eines Typs, der das Protokoll implementiert.

Eine Alternative besteht darin, eine Unterklasse von NSObject und dann die Schnittstelle ICKSyncEngineDelegatezu erstellen.

CKSyncEngineDelegate_Extensions

Erweiterungsmethoden für die ICKSyncEngineDelegate Schnittstelle, um alle Methoden aus dem CKSyncEngineDelegate-Protokoll zu unterstützen.

CKSyncEngineDidFetchChangesEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineDidFetchRecordZoneChangesEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineDidSendChangesEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineFailedRecordSave

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineFailedZoneSave

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineFetchChangesContext

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineFetchChangesOptions

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineFetchChangesScope

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineFetchedDatabaseChangesEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineFetchedRecordDeletion

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineFetchedRecordZoneChangesEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineFetchedZoneDeletion

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEnginePendingDatabaseChange

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEnginePendingRecordZoneChange

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEnginePendingZoneDelete

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEnginePendingZoneSave

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineRecordZoneChangeBatch

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineSendChangesContext

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineSendChangesOptions

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineSendChangesScope

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineSentDatabaseChangesEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineSentRecordZoneChangesEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineState

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineStateSerialization

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineStateUpdateEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineWillFetchChangesEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineWillFetchRecordZoneChangesEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineWillSendChangesEvent

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSystemSharingUIObserver

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKUserIdentity

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKUserIdentityLookupInfo

Der CloudKit-Namespace bietet Zugriff auf iCloud.

Schnittstellen

Name Beschreibung
ICKRecordValue

Diese Schnittstelle stellt das Objective-C-Protokoll CKRecordValuedar.

ICKSyncEngineDelegate

Diese Schnittstelle stellt das Objective-C-Protokoll CKSyncEngineDelegatedar.

Enumerationen

Name Beschreibung
CKAccountStatus

Listet Werte auf, die angeben, ob das iCloud-Konto eines Benutzers verfügbar ist.

CKApplicationPermissions

Listet einen Wert auf, der angibt, dass andere App-Benutzer den aktuellen Benutzer anhand der E-Mail-Adresse ermitteln können.

CKApplicationPermissionStatus

Listet die Zustände auf, die eine Anwendung haben kann, wenn Sie versuchen, eine Berechtigung zu erhalten.

CKDatabaseScope

Listet Werte auf, die ermitteln, ob eine Datenbank privat, freigegeben oder öffentlich ist.

CKErrorCode

Listet CloudKit-Fehlerbedingungen auf.

CKNotificationType

Listet die Ereignisse auf, die eine Pushbenachrichtigung generieren können.

CKOperationGroupTransferSize

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKQueryNotificationReason

Listet die persistenten Speicherereignisse auf, die Datenlebenszyklusbenachrichtigungen auslösen können.

CKQuerySubscriptionOptions

Listet die Uhrzeit oder Uhrzeit auf, zu denen eine CKSubscription Benachrichtigung ausgelöst wird.

CKRecordSavePolicy

Listet Richtlinien auf, die steuern, wann oder ob ein Datensatz gespeichert werden soll.

CKRecordZoneCapabilities

Listet die speziellen Vorgänge auf, die eine Zone ausführen kann.

CKRecordZoneEncryptionScope

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKReferenceAction

Listet Werte auf, die steuern, ob sich ein Verweis selbst löschen soll, wenn sein Zieldatensatz gelöscht wird.

CKShareParticipantAcceptanceStatus

Listet Antworten auf die Freigabe von Teilnahmeanfragen auf.

CKShareParticipantPermission

Listet Berechtigungen für die Benutzerfreigabe auf.

CKShareParticipantRole

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKShareParticipantType

Listet die Freigabeteilnehmertypen auf.

CKSharingParticipantAccessOption

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSharingParticipantPermissionOption

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSubscriptionType

Listet Abonnementtypen auf.

CKSyncEngineAccountChangeType

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineEventType

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEnginePendingDatabaseChangeType

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEnginePendingRecordZoneChangeType

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineSyncReason

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKSyncEngineZoneDeletionReason

Der CloudKit-Namespace bietet Zugriff auf iCloud.

Delegaten

Name Beschreibung
CKAcceptPerShareCompletionHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKDatabaseDeleteSubscriptionHandler

Abschlusshandler für die DeleteSubscription(String, CKDatabaseDeleteSubscriptionHandler) Methode.

CKFetchDatabaseChangesCompletionHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchPerShareMetadataHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchRecordChangesHandler

Delegieren sie für die AllChangesReported Eigenschaft.

CKFetchRecordsCompletedHandler

Delegieren sie für die Completed Eigenschaft.

CKFetchRecordZoneChangesFetchCompletedHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchRecordZoneChangesRecordWasChangedHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchRecordZoneChangesTokensUpdatedHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchRecordZoneChangesWithIDWasDeletedHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchShareParticipantsOperationPerShareParticipantCompletionHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchSubscriptionsCompleteHandler

Delegieren sie für die Completed Eigenschaft.

CKFetchSubscriptionsPerSubscriptionCompletionHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKFetchWebAuthTokenOperationHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKMarkNotificationsReadHandler

Delegieren sie für die Completed Eigenschaft.

CKModifyRecordsOperationHandler

Delegieren sie für die Completed Eigenschaft.

CKModifyRecordsOperationPerRecordDeleteHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKModifyRecordsOperationPerRecordSaveHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKModifyRecordZonesHandler

Delegieren sie für die Completed Eigenschaft.

CKModifyRecordZonesPerRecordZoneDeleteHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKModifyRecordZonesPerRecordZoneSaveHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKModifySubscriptionsHandler

Delegieren sie für die Completed Eigenschaft.

CKModifySubscriptionsPerSubscriptionDeleteHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKModifySubscriptionsPerSubscriptionSaveHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKQueryOperationRecordMatchedHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKRecordZoneCompleteHandler

Delegieren sie für die Completed Eigenschaft.

CKRecordZonePerRecordZoneCompletionHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKShareRequestAccessOperationPerShareAccessRequestCompletionHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

CKShareRequestAccessOperationShareRequestAccessCompletionHandler

Der CloudKit-Namespace bietet Zugriff auf iCloud.

Hinweise

Mit dem CloudKit-Namespace können Anwendungsentwickler den Datenfluss zwischen ihren Anwendungen und iCloud steuern. iCloud bietet serverseitige Datenspeicherung, sowohl "öffentlich", die zwischen allen Instanzen einer Anwendung oder bestimmter Anwendungen gemeinsam genutzt wird, als auch "privat", die für einen einzelnen Benutzer eindeutig ist. iCloud-Speicher und -Transport werden verschlüsselt und zwischen Apple-Geräten synchronisiert. CloudKit bietet keine clientseitige Persistenz oder Datenzwischenspeicherung – CloudKit-Funktionalität ist nur verfügbar, während der Benutzer über eine aktive Internetverbindung verfügt.

Die Klasse der höchsten Ebene im CloudKit ist CKContainer. Ein CloudKit-Container (manchmal in der Apple-Dokumentation als "Ubiquity-Container" bezeichnet) ist ein Informationsspeicher, der mit einem bestimmten Namen identifiziert wird. Apple rät, einen Namen des Formulars "iCloud" zu verwenden. {reverse DNS}. {appName}", z. B. "iCloud.com.mycompany.MyApp". Entwickler müssen ihre Container über das iCloud-Dashboard erstellen und konfigurieren, das über das Apple-Entwicklerportal verfügbar ist.

Ein Einzelner CKContainer kann beide öffentlichen Daten enthalten, die zwischen allen Instanzen der App geteilt werden (siehe PublicCloudDatabase), und privaten Daten, die benutzerspezifische Daten enthalten (siehe PrivateCloudDatabase). Innerhalb von iCloud werden öffentliche Daten im iCloud-Speicher der App gespeichert, während private Daten im privaten iCloud-Speicher des Benutzers gespeichert werden. Die Öffentlichkeit CKDatabase ist für alle verbundenen Benutzer der App verfügbar, unabhängig davon, ob sie bei iCloud angemeldet sind. Das Private CKDatabase ist nur verfügbar, wenn der Benutzer bei iCloud angemeldet ist. Entwickler müssen ihren Code so schreiben, dass er ordnungsgemäß auf Änderungen im Anmelde- oder Verbindungsstatus des Benutzers reagiert.

Diese öffentlichen und privaten CKDatabase Objekte speichern strukturierte Datensätze. Diese werden durch CKRecord Objekte dargestellt. Zusätzlich zu Feld-ähnlichen Schlüsselwertdaten können diese Datensätze große Objekte entweder direkt (mit dem enthaltenden CKRecordObjekt abgerufen) oder als Verweise (sodass lazy-Abruf der großen Daten möglich ist) enthaltenCKAsset.

Alle CKRecord Instanzen werden in einem CKRecordZone. Ein CKRecordZone Beispiel hierfür ist eine herkömmliche Datenbankinstanz: Sie kann mehrere CKRecord Speicher enthalten, die sich gegenseitig beziehen, aber nicht in anderen CKRecordZone Instanzen und CKRecordZone Objekten gespeichert werden können, um Atomvorgänge in mehreren CKRecord Speichern zu koordinieren. Die Ähnlichkeit mit einer Datenbankinstanz ist nicht universell; Beispielsweise kann FetchRecordAsync ein Entwickler eine CKRecord direkt aus der CKDatabase Zone abrufen, ohne auf die Zone zu verweisen. Der Standardwert CKRecordZone ist über DefaultRecordZone. Entwickler können zusätzliche Zonen mithilfe des CloudKit-Dashboards erstellen und diese verwenden, um ihre Daten logisch zu partitionieren.

CloudKit-Apps erfordern ein Bereitstellungsprofil mit der com.apple.developer.icloud-services Berechtigung und einen app-spezifischen Bündelbezeichner (z. B. "com.mycompany.CloudKitApp"). Entwickler müssen ein solches Bereitstellungsprofil erstellen und konfigurieren.

Im Folgenden werden einige typische Verwendungen von CloudKit veranschaulicht, die für einzelne Datensätze verwendet werden:

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