CloudKit Espace de noms
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
L’espace de noms CloudKit permet d’accéder à iCloud.
Classes
CKAcceptSharesOperation |
Implémente une opération qui accepte les enregistrements partagés. |
CKAsset |
Fichier volumineux associé à un CKRecord objet . |
CKContainer |
Encapsule le contenu associé à une application, y compris les données privées partagées et par utilisateur. |
CKContainer.Notifications |
Notification publiée par la CKContainer classe. |
CKDatabase |
Contient des données dans un CKContainer. Une base de données publique CKDatabase fournit des données partagées, une base de données privée contient les données de l’utilisateur actuel. |
CKDatabaseNotification |
Notification sur l’activité de la base de données. |
CKDatabaseOperation |
Classe abstraite pour les opérations sur un CKDatabase. |
CKDatabaseSubscription |
Un abonnement à la base de données. |
CKDiscoverAllContactsOperation |
CKOperation qui récupère les ID de tous les contacts détectables de l’utilisateur de l’application. |
CKDiscoverAllUserIdentitiesOperation |
Opération qui obtient tous les utilisateurs détectables dans le carnet d’adresses du système. |
CKDiscoveredUserInfo |
Informations sur un utilisateur. Retourné par un CKDiscoverAllContactsOperation. |
CKDiscoverUserIdentitiesOperation |
Opération qui recherche les utilisateurs qui correspondent à un critère. |
CKDiscoverUserInfosOperation |
CKOperation qui récupère les ID des utilisateurs détectables dont les adresses e-mail ou les ID d’enregistrement sont déjà connus du développeur d’application. |
CKErrorCodeExtensions |
Méthodes d’extension pour l’énumération CloudKit.CKErrorCode. |
CKErrorFields |
Contient les constantes d’erreur utilisées par CloudKit. |
CKFetchDatabaseChangesOperation |
Opération qui extrait les modifications de base de données. |
CKFetchNotificationChangesOperation |
ce CKOperation ret.. /.. /summary_set.sh CKFetchNotificationChangesOperation A |
CKFetchRecordChangesOperation |
CKDatabaseOperation qui récupère les données relatives aux objets modifiés ou supprimésCKRecord. |
CKFetchRecordsOperation |
CKDatabaseOperation qui récupère des objets spécifiquesCKRecord. |
CKFetchRecordZoneChangesConfiguration |
L’espace de noms CloudKit permet d’accéder à iCloud. |
CKFetchRecordZoneChangesOperation |
L’espace de noms CloudKit permet d’accéder à iCloud. |
CKFetchRecordZoneChangesOptions |
Contient des options qui contrôlent la façon dont les modifications de zone d’enregistrement sont extraites. |
CKFetchRecordZonesOperation |
CKDatabaseOperation qui récupère des CKRecordZone objets à partir d’iCloud. |
CKFetchShareMetadataOperation |
Opération qui extrait les métadonnées partagées pour plusieurs partages. |
CKFetchShareParticipantsOperation |
Opération qui extrait les participants partagés pour les enregistrements partagés. |
CKFetchSubscriptionsOperation |
CKDatabaseOperation qui récupère des CKSubscription objets à partir d’iCloud. |
CKFetchWebAuthTokenOperation |
Opération qui retourne un jeton d’authentification web pour un jeton d’API spécifié à partir du tableau de bord CloudKit. |
CKLocationSortDescriptor |
Trie les enregistrements en fonction de leur distance par rapport à l’emplacement spécifié. |
CKMarkNotificationsReadOperation |
Marque les notifications Push comme lues. Généralement utilisé par les applications qui utilisent des notifications Push pour suivre les modifications d’enregistrement. |
CKModifyBadgeOperation |
CKOperation qui modifie le badge de l’icône de l’application, soit sur l’appareil actuel, soit sur tous les appareils de l’utilisateur. |
CKModifyRecordsOperation |
CKDatabaseOperation qui valide les modifications apportées à un ou plusieurs CKRecord objets. |
CKModifyRecordZonesOperation |
CKDatabaseOperation qui valide les modifications apportées aux zones d’enregistrement. |
CKModifySubscriptionsOperation |
CKDatabaseOperation qui valide les modifications apportées à un ou plusieurs CKSubscription objets. |
CKNotification |
Une notification Push envoyée à l’application. |
CKNotificationID |
Identifie de manière unique une notification Push envoyée à partir d’un conteneur. |
CKNotificationInfo |
Spécifie le type de notifications Push générées lorsque la condition de déclencheur est remplie. |
CKOperation |
Classe de base abstraite pour les opérations exécutées sur la base de données CloudKit. |
CKOperationConfiguration |
Configure le comportement d’une opération CloudKit. |
CKOperationGroup |
Représente un groupe par lots d’opérations CloudKit. |
CKQuery |
Spécifie une requête sur la base de données CloudKit. |
CKQueryCursor |
Contient le point d’arrêt actuel dans le jeu de résultats d’un CKQuery. |
CKQueryNotification |
Notification Push générée par un CKSubscription objet . |
CKQueryOperation |
CKDatabaseOperation qui exécute un CKQuery. |
CKQuerySubscription |
Permet aux développeurs de créer des notifications basées sur une requête. |
CKRecord |
Dictionnaire de paires Key-Value qui structurent les données dans CloudKit. |
CKRecordID |
Identifie de manière unique un CKRecord au sein d’une base de données. |
CKRecordValue |
Les développeurs d’applications ne doivent pas sous-classer cette interface, qui fournit un typage fort pour les objets stockés dans une base de données CloudKit. Les types de données personnalisés ne sont pas pris en charge. |
CKRecordZone |
Permet l’organisation des objets connexes CKRecord . Par défaut, la base de données privée et la base de données publique ont une seule zone. |
CKRecordZoneID |
Identifie de manière unique un CKRecordZone au sein d’une base de données. |
CKRecordZoneNotification |
Notification Push résultant de modifications dans un CKRecordZone. |
CKRecordZoneSubscription |
Un abonnement pour enregistrer les modifications de zone. |
CKReference |
Définit une relation de 1:M entre CKRecord des objets au sein d’un seul CKRecordZone. |
CKServerChangeToken |
Objet en lecture seule qui identifie une version d’un CKRecord. Lors de l’extraction des données mises à jour, le passage du jeton existant permet au serveur de retourner uniquement les modifications, ce qui augmente l’efficacité. |
CKShare |
Représente un enregistrement partagé. |
CKShareKeys |
Constantes utilisées par différentes classes CloudKit. |
CKShareMetadata |
Représente les métadonnées partagées des enregistrements partagés. |
CKShareParticipant |
Contient les données d’un participant de partage. |
CKSubscription |
Requête persistante qui effectue le suivi des modifications sur le serveur. (Consultez CKQueryNotification.) |
CKUserIdentity |
Contient des informations utilisées pour rechercher un ou plusieurs utilisateurs. |
CKUserIdentityLookupInfo |
Contient des données qui peuvent être utilisées pour rechercher un utilisateur. |
Interfaces
ICKRecordValue |
Interface représentant les méthodes requises (le cas échéant) du protocole CKRecordValue. |
Énumérations
CKAccountStatus |
Énumère les valeurs qui indiquent si le compte iCloud d’un utilisateur est disponible. |
CKApplicationPermissions |
Énumère une valeur qui indique que d’autres utilisateurs de l’application peuvent découvrir l’utilisateur actuel par adresse e-mail. |
CKApplicationPermissionStatus |
Énumère les états qu’une application peut avoir lors de la tentative d’obtention d’une autorisation. |
CKDatabaseScope |
Énumère les valeurs qui indiquent si une base de données est privée, partagée ou publique. |
CKErrorCode |
Énumère les conditions d’erreur CloudKit. |
CKNotificationType |
Énumère les événements qui peuvent générer une notification Push. |
CKOperationGroupTransferSize |
L’espace de noms CloudKit permet d’accéder à iCloud. |
CKQueryNotificationReason |
Énumère les événements de stockage persistants qui peuvent déclencher des notifications de cycle de vie des données. |
CKQuerySubscriptionOptions |
Énumère l’heure ou l’heure à laquelle un CKSubscription déclenche une notification. |
CKRecordSavePolicy |
Énumère les stratégies qui contrôlent quand ou si un enregistrement doit être enregistré. |
CKRecordZoneCapabilities |
Énumère les opérations spéciales dont une zone est capable. |
CKReferenceAction |
Énumère les valeurs qui contrôlent si une référence doit se supprimer elle-même lorsque son enregistrement cible est supprimé. |
CKShareParticipantAcceptanceStatus |
Énumère les réponses pour partager les demandes de participation. |
CKShareParticipantPermission |
Énumère les autorisations de partage utilisateur. |
CKShareParticipantRole |
L’espace de noms CloudKit permet d’accéder à iCloud. |
CKShareParticipantType |
Énumère les types de participants de partage. |
CKSubscriptionOptions |
Énumère les indicateurs pour contrôler le comportement des notifications Push pour les abonnements basés sur des requêtes. |
CKSubscriptionType |
Énumère les types d’abonnement. |
Délégués
CKAcceptPerShareCompletionHandler |
L’espace de noms CloudKit permet d’accéder à iCloud. |
CKDatabaseDeleteSubscriptionHandler |
Gestionnaire de saisie semi-automatique pour la DeleteSubscription(String, CKDatabaseDeleteSubscriptionHandler) méthode . |
CKDiscoverUserInfosCompletionHandler |
Les développeurs d’applications peuvent implémenter ce delgate et l’affecter à la propriété M:CloudKit.CKDiscoverUserInfosOperation.Complete* pour traiter les informations utilisateur retournées. |
CKFetchDatabaseChangesCompletionHandler |
L’espace de noms CloudKit permet d’accéder à iCloud. |
CKFetchPerShareMetadataHandler |
L’espace de noms CloudKit permet d’accéder à iCloud. |
CKFetchRecordChangesHandler |
Délégué pour la AllChangesReported propriété . |
CKFetchRecordsCompletedHandler |
Délégué pour la Completed propriété . |
CKFetchRecordZoneChangesFetchCompletedHandler |
L’espace de noms CloudKit permet d’accéder à iCloud. |
CKFetchRecordZoneChangesTokensUpdatedHandler |
L’espace de noms CloudKit permet d’accéder à iCloud. |
CKFetchRecordZoneChangesWithIDWasDeletedHandler |
L’espace de noms CloudKit permet d’accéder à iCloud. |
CKFetchSubscriptionsCompleteHandler |
Délégué pour la Completed propriété . |
CKFetchWebAuthTokenOperationHandler |
L’espace de noms CloudKit permet d’accéder à iCloud. |
CKMarkNotificationsReadHandler |
Délégué pour la Completed propriété . |
CKModifyRecordsOperationHandler |
Délégué pour la Completed propriété . |
CKModifyRecordZonesHandler |
Délégué pour la Completed propriété . |
CKModifySubscriptionsHandler |
Délégué pour la Completed propriété . |
CKRecordZoneCompleteHandler |
Délégué pour la Completed propriété . |
Remarques
L’espace de noms CloudKit permet aux développeurs d’applications de contrôler le flux de données entre leurs applications et iCloud. iCloud fournit un stockage de données côté serveur, à la fois « public » partagé entre toutes les instances d’une application ou d’applications spécifiques et « privé » propre à un seul utilisateur. Le stockage et le transport iCloud sont chiffrés et synchronisés entre les appareils Apple. CloudKit ne fournit pas de persistance côté client ni de mise en cache des données : la fonctionnalité CloudKit n’est disponible que lorsque l’utilisateur dispose d’une connexion Internet active.
La classe de niveau le plus élevé dans CloudKit est CKContainer. Un conteneur CloudKit (parfois appelé « conteneur Ubiquity » dans la documentation Apple) est un magasin d’informations identifié avec un nom particulier. Apple recommande d’utiliser un nom au format « iCloud. {DNS inversé}. {appName} », par exemple, « iCloud.com.mycompany.MyApp ». Les développeurs doivent créer et configurer leurs conteneurs à l’aide du tableau de bord iCloud, disponible via le portail des développeurs Apple.
Un seul CKContainer peut contenir à la fois des données publiques, qui sont partagées entre toutes les instances de l’application (voir PublicCloudDatabase), et des données privées, qui contiennent des données spécifiques à l’utilisateur (voir PrivateCloudDatabase). Dans iCloud, les données publiques sont stockées dans le stockage iCloud de l’application, tandis que les données privées sont stockées dans le stockage iCloud privé de l’utilisateur. Le public CKDatabase est disponible pour tous les utilisateurs connectés de l’application, qu’ils soient connectés ou non à iCloud. Le privé CKDatabase est uniquement si l’utilisateur est connecté à iCloud. Les développeurs doivent écrire leur code de sorte qu’il réagisse correctement aux modifications apportées à l’état de connexion ou de connexion de l’utilisateur.
Ces objets publics et privés CKDatabase stockent des enregistrements structurés. Ceux-ci sont représentés par CKRecord des objets . En plus des données clé-valeur de type champ, ces enregistrements peuvent contenir CKAsset des objets volumineux soit directement (récupérés avec le contenant CKRecord) soit en tant que références (permettant une récupération différée des données volumineuses).
Toutes les CKRecord instances sont stockées dans un CKRecordZone. Un CKRecordZone est similaire à une instance de base de données traditionnelle : il peut contenir plusieurs CKRecord magasins qui peuvent faire référence les uns aux autres, mais pas à des magasins dans d’autres CKRecordZone instances et CKRecordZone des objets peuvent être utilisés pour coordonner des opérations atomiques entre plusieurs CKRecord magasins. La similitude avec une instance de base de données n’est pas universelle ; par exemple, un développeur peut utiliser M:CKDatabase.FetchRecordAsync(CKRecordID) pour récupérer un CKRecord directement à partir du CKDatabase sans faire référence à la zone. La valeur par défaut CKRecordZone est disponible via P:CloudKit.CKRecordZone.DefaultRecordZone(). Les développeurs peuvent créer des zones supplémentaires à l’aide du tableau de bord CloudKit et les utiliser pour partitionner leurs données logiquement.
Les applications CloudKit nécessitent un profil d’approvisionnement avec le com.apple.developer.icloud-services
droit et un identificateur de bundle spécifique à l’application (par exemple, « com.mycompany.CloudKitApp »). Les développeurs doivent créer et configurer ce profil d’approvisionnement.
Voici quelques utilisations classiques de CloudKit qui fonctionnent sur des enregistrements uniques :
//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;
}