CloudKit Namespace
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Der CloudKit-Namespace bietet Zugriff auf iCloud.
Klassen
CKAcceptSharesOperation |
Implementiert einen Vorgang, der freigegebene Datensätze akzeptiert. |
CKAsset |
Eine große Datei, die einem CKRecord -Objekt zugeordnet ist. |
CKContainer |
Kapselt Inhalte, die einer App zugeordnet sind, einschließlich freigegebener und privater Daten pro Benutzer. |
CKContainer.Notifications |
Benachrichtigung, die von der CKContainer Klasse bereitgestellt wird. |
CKDatabase |
Enthält Daten in einem CKContainer. Ein öffentliches CKDatabase stellt freigegebene Daten bereit, eine private Datenbank enthält die Daten des aktuellen Benutzers. |
CKDatabaseNotification |
Eine Benachrichtigung zur Datenbankaktivität. |
CKDatabaseOperation |
Abstrakte Klasse für Vorgänge in einem CKDatabase. |
CKDatabaseSubscription |
Ein Datenbankabonnement. |
CKDiscoverAllContactsOperation |
Ein CKOperation , der die IDs aller erkennbaren Kontakte des App-Benutzers abruft. |
CKDiscoverAllUserIdentitiesOperation |
Ein Vorgang, der alle auffindbaren Benutzer im Adressbuch des Systems abruft. |
CKDiscoveredUserInfo |
Informationen zu einem Benutzer. Wird von einem CKDiscoverAllContactsOperationzurückgegeben. |
CKDiscoverUserIdentitiesOperation |
Vorgang, der Nach Benutzern sucht, die einem Kriterium entsprechen. |
CKDiscoverUserInfosOperation |
Ein CKOperation , der die IDs von auffindbaren Benutzern abruft, deren E-Mail-Adressen oder Datensatz-IDs dem App-Entwickler bereits bekannt sind. |
CKErrorCodeExtensions |
Erweiterungsmethoden für die CloudKit.CKErrorCode-Enumeration. |
CKErrorFields |
Enthält von CloudKit verwendete Fehlerkonstanten. |
CKFetchDatabaseChangesOperation |
Ein Vorgang, der Datenbankänderungen abruft. |
CKFetchNotificationChangesOperation |
Ein CKOperation , das ret.. /.. /summary_set.sh CKFetchNotificationChangesOperation A |
CKFetchRecordChangesOperation |
Ein CKDatabaseOperation , der Daten zu geänderten oder gelöschten Objekten abruft CKRecord . |
CKFetchRecordsOperation |
Ein CKDatabaseOperation , der bestimmte CKRecord Objekte abruft. |
CKFetchRecordZoneChangesConfiguration |
Der CloudKit-Namespace bietet Zugriff auf iCloud. |
CKFetchRecordZoneChangesOperation |
Der CloudKit-Namespace bietet Zugriff auf iCloud. |
CKFetchRecordZoneChangesOptions |
Enthält Optionen, die steuern, wie Änderungen der Datensatzzone abgerufen werden. |
CKFetchRecordZonesOperation |
Ein CKDatabaseOperation , der Objekte aus iCloud abruft CKRecordZone . |
CKFetchShareMetadataOperation |
Ein Vorgang, der freigegebene Metadaten für mehrere Freigaben abruft. |
CKFetchShareParticipantsOperation |
Ein Vorgang, der freigegebene Teilnehmer für freigegebene Datensätze abruft. |
CKFetchSubscriptionsOperation |
Ein CKDatabaseOperation , der Objekte aus iCloud abruft CKSubscription . |
CKFetchWebAuthTokenOperation |
Vorgang, der ein Webauthentifizierungstoken für ein angegebenes API-Token aus dem CloudKit-Dashboard zurückgibt. |
CKLocationSortDescriptor |
Sortiert Datensätze basierend auf ihrem Abstand zum angegebenen Speicherort. |
CKMarkNotificationsReadOperation |
Markiert Pushbenachrichtigungen als gelesen. Wird in der Regel von Apps verwendet, die Pushbenachrichtigungen zum Nachverfolgen von Änderungen verwenden. |
CKModifyBadgeOperation |
Ein CKOperation , der den Badge des App-Symbols entweder auf dem aktuellen Gerät oder auf allen Geräten des Benutzers ändert. |
CKModifyRecordsOperation |
Ein CKDatabaseOperation , der Änderungen an ein oder CKRecord mehrere -Objekte committet. |
CKModifyRecordZonesOperation |
Ein CKDatabaseOperation , der Änderungen an Datensatzzonen committet. |
CKModifySubscriptionsOperation |
Ein CKDatabaseOperation , der Änderungen an ein oder CKSubscription mehrere -Objekte committet. |
CKNotification |
Eine an die App gesendete Pushbenachrichtigung. |
CKNotificationID |
Identifiziert eindeutig eine Pushbenachrichtigung, die von einem Container gesendet wird. |
CKNotificationInfo |
Gibt den Typ der Pushbenachrichtigungen an, die generiert werden, wenn die Triggerbedingung erfüllt ist. |
CKOperation |
Abstrakte Basisklasse für Vorgänge, die für die CloudKit-Datenbank ausgeführt werden. |
CKOperationConfiguration |
Konfiguriert das Verhalten eines CloudKit-Vorgangs. |
CKOperationGroup |
Stellt eine Batchgruppe von CloudKit-Vorgängen dar. |
CKQuery |
Gibt eine Abfrage für die CloudKit-Datenbank an. |
CKQueryCursor |
Enthält den aktuellen Stopppunkt im Resultset eines CKQuery. |
CKQueryNotification |
Eine push-Benachrichtigung, die von einem CKSubscription -Objekt generiert wird. |
CKQueryOperation |
Ein CKDatabaseOperation , der eine CKQueryausführt. |
CKQuerySubscription |
Ermöglicht Entwicklern das Erstellen von Benachrichtigungen basierend auf einer Abfrage. |
CKRecord |
Ein Wörterbuch mit Key-Value Paaren, die Daten in CloudKit strukturieren. |
CKRecordID |
Identifiziert eine CKRecord innerhalb einer Datenbank eindeutig. |
CKRecordValue |
App-Entwickler sollten diese Schnittstelle nicht unterklassen, die eine starke Eingabe für Objekte bietet, die in einer CloudKit-Datenbank gespeichert sind. Benutzerdefinierte Datentypen werden nicht unterstützt. |
CKRecordZone |
Ermöglicht das Organisieren verwandter CKRecord Objekte. Standardmäßig verfügen sowohl die private als auch die öffentliche Datenbank über eine einzelne Zone. |
CKRecordZoneID |
Identifiziert eine CKRecordZone innerhalb einer Datenbank eindeutig. |
CKRecordZoneNotification |
Eine Pushbenachrichtigung, die sich aus Änderungen innerhalb eines CKRecordZoneergibt. |
CKRecordZoneSubscription |
Ein Abonnement zum Aufzeichnen von Zonenänderungen. |
CKReference |
Definiert eine 1:M-Beziehung zwischen CKRecord Objekten innerhalb einer einzelnen CKRecordZone. |
CKServerChangeToken |
Ein schreibgeschütztes Objekt, das eine Version von identifiziert CKRecord. Beim Abrufen aktualisierter Daten ermöglicht die Übergabe des vorhandenen Tokens, dass der Server nur die Änderungen zurückgibt, wodurch die Effizienz erhöht wird. |
CKShare |
Stellt einen freigegebenen Datensatz dar. |
CKShareKeys |
Von verschiedenen CloudKit-Klassen verwendete Konstanten. |
CKShareMetadata |
Stellt freigegebene Metadaten für einen freigegebenen Datensatz dar. |
CKShareParticipant |
Enthält Daten für einen Freigabeteilnehmer. |
CKSubscription |
Eine persistente Abfrage, die Änderungen auf dem Server nachverfolgt. (Siehe CKQueryNotification.) |
CKUserIdentity |
Enthält Informationen, die verwendet werden, um einen oder mehrere Benutzer nachzuschlagen. |
CKUserIdentityLookupInfo |
Enthält Daten, die zum Suchen eines Benutzers verwendet werden können. |
Schnittstellen
ICKRecordValue |
Schnittstelle, die die erforderlichen Methoden (falls vorhanden) des Protokolls CKRecordValuedarstellt. |
Enumerationen
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 versucht wird, eine Berechtigung zu erhalten. |
CKDatabaseScope |
Listet Werte auf, die angeben, 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 den Zeitpunkt oder die Zeiten 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. |
CKReferenceAction |
Listet Werte auf, die steuern, ob ein Verweis sich selbst löschen soll, wenn der Zieldatensatz gelöscht wird. |
CKShareParticipantAcceptanceStatus |
Listet Antworten auf Freigabeteilnahmeanforderungen auf. |
CKShareParticipantPermission |
Listet Benutzerfreigabeberechtigungen auf. |
CKShareParticipantRole |
Der CloudKit-Namespace bietet Zugriff auf iCloud. |
CKShareParticipantType |
Listet freigabeteilnehmertypen auf. |
CKSubscriptionOptions |
Listet Flags zum Steuern des Pushbenachrichtigungsverhaltens für abfragebasierte Abonnements auf. |
CKSubscriptionType |
Listet Abonnementtypen auf. |
Delegaten
CKAcceptPerShareCompletionHandler |
Der CloudKit-Namespace bietet Zugriff auf iCloud. |
CKDatabaseDeleteSubscriptionHandler |
Vervollständigungshandler für die DeleteSubscription(String, CKDatabaseDeleteSubscriptionHandler) -Methode. |
CKDiscoverUserInfosCompletionHandler |
Anwendungsentwickler können dieses Delgate implementieren und der M:CloudKit.CKDiscoverUserInfosOperation.Complete* -Eigenschaft zuweisen, um die zurückgegebenen Benutzerinformationen zu verarbeiten. |
CKFetchDatabaseChangesCompletionHandler |
Der CloudKit-Namespace bietet Zugriff auf iCloud. |
CKFetchPerShareMetadataHandler |
Der CloudKit-Namespace bietet Zugriff auf iCloud. |
CKFetchRecordChangesHandler |
Delegat für die AllChangesReported Eigenschaft. |
CKFetchRecordsCompletedHandler |
Delegat für die Completed Eigenschaft. |
CKFetchRecordZoneChangesFetchCompletedHandler |
Der CloudKit-Namespace bietet Zugriff auf iCloud. |
CKFetchRecordZoneChangesTokensUpdatedHandler |
Der CloudKit-Namespace bietet Zugriff auf iCloud. |
CKFetchRecordZoneChangesWithIDWasDeletedHandler |
Der CloudKit-Namespace bietet Zugriff auf iCloud. |
CKFetchSubscriptionsCompleteHandler |
Delegat für die Completed Eigenschaft. |
CKFetchWebAuthTokenOperationHandler |
Der CloudKit-Namespace bietet Zugriff auf iCloud. |
CKMarkNotificationsReadHandler |
Delegat für die Completed Eigenschaft. |
CKModifyRecordsOperationHandler |
Delegat für die Completed Eigenschaft. |
CKModifyRecordZonesHandler |
Delegat für die Completed Eigenschaft. |
CKModifySubscriptionsHandler |
Delegat für die Completed Eigenschaft. |
CKRecordZoneCompleteHandler |
Delegat für die Completed Eigenschaft. |
Hinweise
Mit dem CloudKit-Namespace können Anwendungsentwickler den Datenfluss zwischen ihren Anwendungen und iCloud steuern. iCloud bietet serverseitigen Datenspeicher, sowohl "öffentlich", der von allen Instanzen einer Anwendung oder bestimmten Anwendungen gemeinsam genutzt wird, als auch "private", die für einen einzelnen Benutzer eindeutig ist. iCloud-Speicher und -Transport werden zwischen Apple-Geräten verschlüsselt und synchronisiert. CloudKit bietet keine clientseitige Persistenz oder Datenzwischenspeicherung. Die CloudKit-Funktionalität ist nur verfügbar, wenn der Benutzer über eine aktive Internetverbindung verfügt.
Die höchste Klasse im CloudKit ist CKContainer. Ein CloudKit-Container (in der Apple-Dokumentation manchmal als "Ubiquity-Container" bezeichnet) ist ein Informationsspeicher, der mit einem bestimmten Namen identifiziert wird. Apple rät dazu, einen Namen im Format "iCloud. {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 sowohl öffentliche Daten enthalten, die von allen Instanzen der App freigegeben werden (siehe PublicCloudDatabase), als auch private 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 Öffentliche CKDatabase ist für alle verbundenen Benutzer der App verfügbar, unabhängig davon, ob sie bei iCloud angemeldet sind oder nicht. Das private CKDatabase ist nur, 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 feldartigen Schlüssel-Wert-Daten können diese Datensätze große Objekte entweder direkt (abgerufen mit dem enthaltenden CKRecord) oder als Verweise (was einen verzögerten Abruf der großen Daten ermöglicht) enthaltenCKAsset.
Alle CKRecord Instanzen werden in einem CKRecordZonegespeichert. Ein CKRecordZone ist so etwas wie eine herkömmliche Datenbankinstanz: Sie kann mehrere CKRecord Speicher enthalten, die sich möglicherweise aufeinander beziehen, aber nicht auf Speicher in anderen CKRecordZone Instanzen, und CKRecordZone Objekte können verwendet werden, um atomische Vorgänge über mehrere CKRecord Speicher hinweg zu koordinieren. Die Ähnlichkeit mit einer Datenbankinstanz ist nicht universell. Beispielsweise kann ein Entwickler M:CKDatabase.FetchRecordAsync(CKRecordID) verwenden, um direkt CKRecord aus der CKDatabase abzurufen, ohne auf die Zone zu verweisen. Der Standardwert CKRecordZone ist über P:CloudKit.CKRecordZone.DefaultRecordZone()verfügbar. 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 einem app-spezifischen Bundle-Bezeichner (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 können:
//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;
}