CloudKit 名前空間
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
CloudKit 名前空間は、iCloud へのアクセスを提供します。
クラス
CKAcceptSharesOperation |
共有レコードを受け入れる操作を実装します。 |
CKAsset |
オブジェクトに関連付 CKRecord けられている大きなファイル。 |
CKContainer |
共有データやユーザーごとのプライベート データなど、アプリに関連付けられているコンテンツをカプセル化します。 |
CKContainer.Notifications |
クラスによって CKContainer 投稿された通知。 |
CKDatabase |
内のデータを CKContainer格納します。 パブリック CKDatabase は共有データを提供し、プライベート db は現在のユーザーのデータを保持します。 |
CKDatabaseNotification |
データベース アクティビティに関する通知。 |
CKDatabaseOperation |
に対 CKDatabaseする操作の抽象クラス。 |
CKDatabaseSubscription |
データベース サブスクリプション。 |
CKDiscoverAllContactsOperation |
CKOperationアプリ ユーザーの検出可能なすべての連絡先の ID を取得する 。 |
CKDiscoverAllUserIdentitiesOperation |
システムのアドレス帳で検出可能なすべてのユーザーを取得する操作。 |
CKDiscoveredUserInfo |
ユーザーに関する情報。 によって CKDiscoverAllContactsOperation返されます。 |
CKDiscoverUserIdentitiesOperation |
条件に一致するユーザーを検索する操作。 |
CKDiscoverUserInfosOperation |
CKOperation電子メール アドレスまたはレコード ID がアプリ開発で既に認識されている、検出可能なユーザーの ID を取得する 。 |
CKErrorCodeExtensions |
CloudKit.CKErrorCode 列挙体の拡張メソッド。 |
CKErrorFields |
CloudKit で使用されるエラー定数を保持します。 |
CKFetchDatabaseChangesOperation |
データベースの変更をフェッチする操作。 |
CKFetchNotificationChangesOperation |
CKOperationその ret../../summary_set.sh CKFetchNotificationChangesOperation A |
CKFetchRecordChangesOperation |
CKDatabaseOperation変更または削除されたCKRecordオブジェクトに関するデータを取得する 。 |
CKFetchRecordsOperation |
CKDatabaseOperation特定CKRecordのオブジェクトを取得する 。 |
CKFetchRecordZoneChangesConfiguration |
CloudKit 名前空間は、iCloud へのアクセスを提供します。 |
CKFetchRecordZoneChangesOperation |
CloudKit 名前空間は、iCloud へのアクセスを提供します。 |
CKFetchRecordZoneChangesOptions |
レコード ゾーンの変更のフェッチ方法を制御するオプションが含まれています。 |
CKFetchRecordZonesOperation |
CKDatabaseOperation iCloud からオブジェクトを取得する CKRecordZone 。 |
CKFetchShareMetadataOperation |
複数の共有の共有メタデータをフェッチする操作。 |
CKFetchShareParticipantsOperation |
共有レコードの共有参加者をフェッチする操作。 |
CKFetchSubscriptionsOperation |
CKDatabaseOperation iCloud からオブジェクトを取得する CKSubscription 。 |
CKFetchWebAuthTokenOperation |
CloudKit ダッシュボードから、指定した API トークンの Web 認証トークンを返す操作。 |
CKLocationSortDescriptor |
指定した場所からの距離に基づいてレコードを並べ替えます。 |
CKMarkNotificationsReadOperation |
プッシュ通知を読み取りとしてマークします。 通常、プッシュ通知を使用してレコードの変更を追跡するアプリで使用されます。 |
CKModifyBadgeOperation |
CKOperation現在のデバイスまたはすべてのユーザーのデバイスで、アプリのアイコンのバッジを変更する 。 |
CKModifyRecordsOperation |
CKDatabaseOperation 1 つ以上CKRecordのオブジェクトに対する変更をコミットする 。 |
CKModifyRecordZonesOperation |
CKDatabaseOperationレコード ゾーンへの変更をコミットする 。 |
CKModifySubscriptionsOperation |
CKDatabaseOperation 1 つ以上CKSubscriptionのオブジェクトに対する変更をコミットする 。 |
CKNotification |
アプリに送信されるプッシュ通知。 |
CKNotificationID |
コンテナーから送信されたプッシュ通知を一意に識別します。 |
CKNotificationInfo |
トリガー条件が満たされたときに生成されるプッシュ通知の種類を指定します。 |
CKOperation |
CloudKit データベースに対して実行される操作の抽象基本クラス。 |
CKOperationConfiguration |
CloudKit 操作の動作を構成します。 |
CKOperationGroup |
CloudKit 操作のバッチ処理されたグループを表します。 |
CKQuery |
CloudKit データベースに対するクエリを指定します。 |
CKQueryCursor |
の結果セット内の現在の停止ポイントを CKQuery保持します。 |
CKQueryNotification |
オブジェクトによって CKSubscription 生成されるプッシュ通知。 |
CKQueryOperation |
CKDatabaseOperationを実行する CKQuery。 |
CKQuerySubscription |
開発者がクエリに基づいて通知を作成できるようにします。 |
CKRecord |
CloudKit 内でデータを構造化するKey-Valueペアのディクショナリ。 |
CKRecordID |
データベース内の を CKRecord 一意に識別します。 |
CKRecordValue |
アプリ開発者はこのインターフェイスをサブクラス化しないでください。これにより、CloudKit データベースに格納されているオブジェクトに対して厳密な型指定が提供されます。 カスタム データ型はサポートされていません。 |
CKRecordZone |
関連 CKRecord オブジェクトを整理できます。 既定では、プライベート データベースとパブリック データベースの両方に 1 つのゾーンがあります。 |
CKRecordZoneID |
データベース内の を CKRecordZone 一意に識別します。 |
CKRecordZoneNotification |
内 CKRecordZoneの変更に起因するプッシュ通知。 |
CKRecordZoneSubscription |
ゾーンの変更を記録するためのサブスクリプション。 |
CKReference |
1 つの CKRecordZone内のオブジェクト間CKRecordの 1:M リレーションシップを定義します。 |
CKServerChangeToken |
のバージョンを識別する読み取り専用オブジェクト CKRecord。 更新されたデータをフェッチするときに、既存のトークンを渡すと、サーバーは変更のみを返すことができるので、効率が向上します。 |
CKShare |
共有レコードを表します。 |
CKShareKeys |
さまざまな CloudKit クラスで使用される定数。 |
CKShareMetadata |
共有レコードの共有メタデータを表します。 |
CKShareParticipant |
共有参加者のデータが含まれます。 |
CKSubscription |
サーバー上の変更を追跡する永続的なクエリ。 (「CKQueryNotification」を参照)。 |
CKUserIdentity |
ユーザーまたはユーザーを検索するために使用される情報が含まれます。 |
CKUserIdentityLookupInfo |
ユーザーを検索するために使用できるデータが含まれます。 |
インターフェイス
ICKRecordValue |
プロトコル CKRecordValueの必要なメソッド (存在する場合) を表すインターフェイス。 |
列挙型
CKAccountStatus |
ユーザーの iCloud アカウントが使用可能かどうかを示す値を列挙します。 |
CKApplicationPermissions |
他のアプリ ユーザーが現在のユーザーをメール アドレスで検出できることを示す値を列挙します。 |
CKApplicationPermissionStatus |
アクセス許可を取得しようとしたときにアプリケーションが持つ可能性がある状態を列挙します。 |
CKDatabaseScope |
データベースがプライベート、共有、パブリックのいずれであるかを示す値を列挙します。 |
CKErrorCode |
CloudKit のエラー条件を列挙します。 |
CKNotificationType |
プッシュ通知を生成できるイベントを列挙します。 |
CKOperationGroupTransferSize |
CloudKit 名前空間は、iCloud へのアクセスを提供します。 |
CKQueryNotificationReason |
データ ライフサイクル通知をトリガーできる永続的なストレージ イベントを列挙します。 |
CKQuerySubscriptionOptions |
が通知を発生する CKSubscription 時刻を列挙します。 |
CKRecordSavePolicy |
レコードを保存するタイミングとタイミングを制御するポリシーを列挙します。 |
CKRecordZoneCapabilities |
ゾーンが実行できる特殊な操作を列挙します。 |
CKReferenceAction |
ターゲット レコードが削除されたときに参照自体を削除するかどうかを制御する値を列挙します。 |
CKShareParticipantAcceptanceStatus |
参加要求を共有する応答を列挙します。 |
CKShareParticipantPermission |
ユーザー共有のアクセス許可を列挙します。 |
CKShareParticipantRole |
CloudKit 名前空間は、iCloud へのアクセスを提供します。 |
CKShareParticipantType |
共有参加者の種類を列挙します。 |
CKSubscriptionOptions |
クエリ ベースのサブスクリプションのプッシュ通知動作を制御するためのフラグを列挙します。 |
CKSubscriptionType |
サブスクリプションの種類を列挙します。 |
代理人
注釈
CloudKit 名前空間を使用すると、アプリケーション開発者はアプリケーションと iCloud の間のデータフローを制御できます。 iCloud は、アプリケーションまたは特定のアプリケーションのすべてのインスタンス間で共有される "パブリック" と、1 人のユーザーに固有の "プライベート" の両方のサーバー側データ ストレージを提供します。 iCloud のストレージとトランスポートは、Apple デバイス間で暗号化および同期されます。 CloudKit では、クライアント側の永続化やデータ キャッシュは提供されません。CloudKit 機能は、ユーザーがアクティブなインターネット接続を持っている間にのみ使用できます。
CloudKit の最上位クラスは です CKContainer。 CloudKit コンテナー (Apple ドキュメントでは "Ubiquity コンテナー" と呼ばれることもあります) は、特定の名前で識別される情報ストアです。 Apple では、"iCloud" という形式の名前を使用することをお勧めします。{逆引き DNS}。{appName}"、たとえば、"iCloud.com.mycompany.MyApp" です。 開発者は、Apple 開発者ポータルを使用して利用できる iCloud ダッシュボードを使用してコンテナーを作成して構成する必要があります。
単一CKContainerには、アプリのすべてのインスタンス間で共有されるパブリック データ (を参照PublicCloudDatabase) と、ユーザー固有のデータを含むプライベート データの両方を含む場合があります (「」を参照)。PrivateCloudDatabase iCloud 内では、パブリック データはアプリの iCloud ストレージに格納され、プライベート データはユーザーのプライベート iCloud ストレージに格納されます。 パブリック CKDatabase は、iCloud にログインしているかどうかに関係なく、アプリのすべての接続ユーザーが利用できます。 プライベート CKDatabase は、ユーザーが iCloud にログインしている場合のみです。 開発者は、ユーザーのログインまたは接続状態の変更に適切に対応するようにコードを記述する必要があります。
これらのパブリック オブジェクトとプライベート CKDatabase オブジェクトには、構造化レコードが格納されます。 これらはオブジェクトで CKRecord 表されます。 これらのレコードは、フィールドに似たキー値データに加えて、大きなオブジェクトを直接 (を含む CKRecordを使用して取得) または参照として保持CKAssetできます (大きなデータを遅延取得できます)。
すべての CKRecord インスタンスは、 内に CKRecordZone格納されます。 CKRecordZoneは従来のデータベース インスタンスのようなものです。互いに参照できる複数CKRecordのストアを含めることができますが、他CKRecordZoneのインスタンスCKRecordZoneには格納できません。オブジェクトを使用して、複数CKRecordのストア間でアトミック操作を調整できます。 データベース インスタンスと類似することは普遍的ではありません。たとえば、開発者は M:CKDatabase.FetchRecordAsync(CKRecordID) を使用して、ゾーンを参照せずに から CKDatabase 直接 を取得CKRecordできます。 既定値 CKRecordZone は P:CloudKit.CKRecordZone.DefaultRecordZone()を介して使用できます。 開発者は、CloudKit ダッシュボードを使用して追加のゾーンを作成し、それらを使用してデータを論理的にパーティション分割できます。
CloudKit アプリには、エンタイトルメントとアプリ固有の com.apple.developer.icloud-services
バンドル識別子 ("com.mycompany.CloudKitApp" など) を含むプロビジョニング プロファイルが必要です。 開発者は、このようなプロビジョニング プロファイルを作成して構成する必要があります。
次に、1 つのレコードで動作する CloudKit の一般的な使用方法を示します。
//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;
}