CloudKit Ruang nama
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Namespace Layanan CloudKit menyediakan akses ke iCloud.
Kelas
CKAcceptSharesOperation |
Menerapkan operasi yang menerima rekaman bersama. |
CKAsset |
File besar yang CKRecord terkait dengan objek. |
CKContainer |
Merangkum konten yang terkait dengan aplikasi, termasuk data pribadi bersama dan per pengguna. |
CKContainer.Notifications |
Pemberitahuan yang diposting oleh CKContainer kelas . |
CKDatabase |
Berisi data dalam CKContainer. Publik CKDatabase menyediakan data bersama, db privat menyimpan data pengguna saat ini. |
CKDatabaseNotification |
Pemberitahuan tentang aktivitas database. |
CKDatabaseOperation |
Kelas abstrak untuk operasi pada CKDatabase. |
CKDatabaseSubscription |
Langganan database. |
CKDiscoverAllContactsOperation |
CKOperation yang mengambil ID semua kontak yang dapat ditemukan dari pengguna aplikasi. |
CKDiscoverAllUserIdentitiesOperation |
Operasi yang mendapatkan semua pengguna yang dapat ditemukan dalam buku alamat sistem. |
CKDiscoveredUserInfo |
Informasi tentang pengguna. Dikembalikan oleh CKDiscoverAllContactsOperation. |
CKDiscoverUserIdentitiesOperation |
Operasi yang menemukan pengguna yang cocok dengan kriteria. |
CKDiscoverUserInfosOperation |
CKOperation yang mengambil ID pengguna yang dapat ditemukan yang alamat email atau ID rekamannya sudah diketahui oleh dev aplikasi. |
CKErrorCodeExtensions |
Metode ekstensi untuk enumerasi CloudKit.CKErrorCode. |
CKErrorFields |
Menyimpan konstanta kesalahan yang digunakan oleh CloudKit. |
CKFetchDatabaseChangesOperation |
Operasi yang mengambil perubahan database. |
CKFetchNotificationChangesOperation |
Sebuah CKOperation ret yang. /.. /summary_set.sh CKFetchNotificationChangesOperation A |
CKFetchRecordChangesOperation |
CKDatabaseOperation Yang mengambil data tentang objek yang diubah atau dihapusCKRecord. |
CKFetchRecordsOperation |
CKDatabaseOperation yang mengambil objek tertentuCKRecord. |
CKFetchRecordZoneChangesConfiguration |
Namespace Layanan CloudKit menyediakan akses ke iCloud. |
CKFetchRecordZoneChangesOperation |
Namespace Layanan CloudKit menyediakan akses ke iCloud. |
CKFetchRecordZoneChangesOptions |
Berisi opsi yang mengontrol bagaimana perubahan zona rekaman diambil. |
CKFetchRecordZonesOperation |
CKDatabaseOperation yang mengambil CKRecordZone objek dari iCloud. |
CKFetchShareMetadataOperation |
Operasi yang mengambil metadata bersama untuk beberapa berbagi. |
CKFetchShareParticipantsOperation |
Operasi yang mengambil peserta bersama untuk rekaman bersama. |
CKFetchSubscriptionsOperation |
CKDatabaseOperation yang mengambil CKSubscription objek dari iCloud. |
CKFetchWebAuthTokenOperation |
Operasi yang mengembalikan token autentikasi web untuk token API tertentu dari Dasbor CloudKit. |
CKLocationSortDescriptor |
Mengurutkan rekaman berdasarkan jaraknya dari lokasi yang ditentukan. |
CKMarkNotificationsReadOperation |
Menandai pemberitahuan push sebagai sudah dibaca. Biasanya digunakan oleh aplikasi yang menggunakan pemberitahuan push untuk melacak perubahan rekaman. |
CKModifyBadgeOperation |
CKOperation yang memodifikasi lencana ikon aplikasi, baik di perangkat saat ini atau semua perangkat pengguna. |
CKModifyRecordsOperation |
CKDatabaseOperation Yang menerapkan perubahan pada satu atau beberapa CKRecord objek. |
CKModifyRecordZonesOperation |
CKDatabaseOperation Yang menerapkan perubahan pada zona rekaman. |
CKModifySubscriptionsOperation |
CKDatabaseOperation Yang menerapkan perubahan pada satu atau beberapa CKSubscription objek. |
CKNotification |
Pemberitahuan push yang dikirim ke aplikasi. |
CKNotificationID |
Secara unik mengidentifikasi pemberitahuan push yang dikirim dari kontainer. |
CKNotificationInfo |
Menentukan jenis pemberitahuan push yang dihasilkan saat kondisi pemicu terpenuhi. |
CKOperation |
Kelas dasar abstrak untuk operasi yang dijalankan terhadap database CloudKit. |
CKOperationConfiguration |
Mengonfigurasi perilaku operasi CloudKit. |
CKOperationGroup |
Mewakili grup batch operasi CloudKit. |
CKQuery |
Menentukan kueri terhadap database CloudKit. |
CKQueryCursor |
Menahan titik berhenti saat ini dalam kumpulan CKQueryhasil . |
CKQueryNotification |
Pemberitahuan push yang dihasilkan oleh CKSubscription objek. |
CKQueryOperation |
CKDatabaseOperation Yang mengeksekusi CKQuery. |
CKQuerySubscription |
Memungkinkan pengembang membuat pemberitahuan berdasarkan kueri. |
CKRecord |
Kamus pasangan Key-Value yang menyusun data dalam CloudKit. |
CKRecordID |
Secara unik mengidentifikasi dalam CKRecord database. |
CKRecordValue |
Pengembang aplikasi tidak boleh mensubkelas antarmuka ini, yang menyediakan pengetikan yang kuat untuk objek yang disimpan dalam database CloudKit. Jenis data kustom tidak didukung. |
CKRecordZone |
Memungkinkan objek terkait CKRecord diatur. Secara default, database privat dan publik memiliki satu zona. |
CKRecordZoneID |
Secara unik mengidentifikasi dalam CKRecordZone database. |
CKRecordZoneNotification |
Pemberitahuan push yang dihasilkan dari perubahan dalam CKRecordZone. |
CKRecordZoneSubscription |
Langganan untuk merekam perubahan zona. |
CKReference |
Menentukan hubungan 1:M antara CKRecord objek dalam satu CKRecordZone. |
CKServerChangeToken |
Objek baca-saja yang mengidentifikasi versi CKRecord. Saat mengambil data yang diperbarui, meneruskan token yang ada memungkinkan server untuk hanya mengembalikan perubahan, meningkatkan efisiensi. |
CKShare |
Mewakili rekaman bersama. |
CKShareKeys |
Konstanta yang digunakan oleh berbagai kelas CloudKit. |
CKShareMetadata |
Mewakili metadata bersama rekaman bersama. |
CKShareParticipant |
Berisi data untuk peserta berbagi. |
CKSubscription |
Kueri persisten yang melacak perubahan di server. (Lihat CKQueryNotification.) |
CKUserIdentity |
Berisi informasi yang digunakan untuk mencari pengguna atau pengguna. |
CKUserIdentityLookupInfo |
Berisi data yang dapat digunakan untuk mencari pengguna. |
Antarmuka
ICKRecordValue |
Antarmuka yang mewakili metode yang diperlukan (jika ada) dari protokol CKRecordValue. |
Enum
CKAccountStatus |
Menghitung nilai yang menunjukkan apakah akun iCloud pengguna tersedia. |
CKApplicationPermissions |
Menghitung nilai yang menunjukkan bahwa pengguna aplikasi lain dapat menemukan pengguna saat ini melalui alamat email. |
CKApplicationPermissionStatus |
Menghitung status yang dapat dimiliki aplikasi saat mencoba mendapatkan izin. |
CKDatabaseScope |
Menghitung nilai yang memberi tahu apakah database bersifat privat, bersama, atau publik. |
CKErrorCode |
Menghitung kondisi kesalahan CloudKit. |
CKNotificationType |
Menghitung peristiwa yang dapat menghasilkan pemberitahuan push. |
CKOperationGroupTransferSize |
Namespace Layanan CloudKit menyediakan akses ke iCloud. |
CKQueryNotificationReason |
Menghitung peristiwa penyimpanan persisten yang dapat memicu pemberitahuan siklus hidup data. |
CKQuerySubscriptionOptions |
Menghitung waktu atau waktu saat CKSubscription pemberitahuan diaktifkan. |
CKRecordSavePolicy |
Menghitung kebijakan yang mengontrol kapan atau jika rekaman harus disimpan. |
CKRecordZoneCapabilities |
Menghitung operasi khusus yang mampu dilakukan zona. |
CKReferenceAction |
Menghitung nilai yang mengontrol apakah referensi harus menghapus dirinya sendiri ketika rekaman targetnya dihapus. |
CKShareParticipantAcceptanceStatus |
Menghitung respons untuk berbagi permintaan partisipasi. |
CKShareParticipantPermission |
Menghitung izin berbagi pengguna. |
CKShareParticipantRole |
Namespace Layanan CloudKit menyediakan akses ke iCloud. |
CKShareParticipantType |
Menghitung jenis peserta berbagi. |
CKSubscriptionOptions |
Menghitung bendera untuk mengontrol perilaku pemberitahuan push untuk langganan berbasis kueri. |
CKSubscriptionType |
Menghitung jenis langganan. |
Delegasikan
CKAcceptPerShareCompletionHandler |
Namespace Layanan CloudKit menyediakan akses ke iCloud. |
CKDatabaseDeleteSubscriptionHandler |
Handler penyelesaian untuk DeleteSubscription(String, CKDatabaseDeleteSubscriptionHandler) metode . |
CKDiscoverUserInfosCompletionHandler |
Pengembang aplikasi dapat menerapkan delegasi ini dan menetapkannya ke properti M:CloudKit.CKDiscoverUserInfosOperation.Complete* untuk memproses informasi pengguna yang dikembalikan. |
CKFetchDatabaseChangesCompletionHandler |
Namespace Layanan CloudKit menyediakan akses ke iCloud. |
CKFetchPerShareMetadataHandler |
Namespace Layanan CloudKit menyediakan akses ke iCloud. |
CKFetchRecordChangesHandler |
Delegasikan untuk AllChangesReported properti . |
CKFetchRecordsCompletedHandler |
Delegasikan untuk Completed properti . |
CKFetchRecordZoneChangesFetchCompletedHandler |
Namespace Layanan CloudKit menyediakan akses ke iCloud. |
CKFetchRecordZoneChangesTokensUpdatedHandler |
Namespace Layanan CloudKit menyediakan akses ke iCloud. |
CKFetchRecordZoneChangesWithIDWasDeletedHandler |
Namespace Layanan CloudKit menyediakan akses ke iCloud. |
CKFetchSubscriptionsCompleteHandler |
Delegasikan untuk Completed properti . |
CKFetchWebAuthTokenOperationHandler |
Namespace Layanan CloudKit menyediakan akses ke iCloud. |
CKMarkNotificationsReadHandler |
Delegasikan untuk Completed properti . |
CKModifyRecordsOperationHandler |
Delegasikan untuk Completed properti . |
CKModifyRecordZonesHandler |
Delegasikan untuk Completed properti . |
CKModifySubscriptionsHandler |
Delegasikan untuk Completed properti . |
CKRecordZoneCompleteHandler |
Delegasikan untuk Completed properti . |
Keterangan
Namespace Layanan CloudKit memungkinkan pengembang aplikasi untuk mengontrol aliran data antara aplikasi mereka dan iCloud. iCloud menyediakan penyimpanan data sisi server, baik "publik" yang dibagikan antara semua instans aplikasi atau aplikasi tertentu dan "privat" yang unik untuk satu pengguna. Penyimpanan dan transportasi iCloud dienkripsi dan disinkronkan antara perangkat Apple. CloudKit tidak menyediakan persistensi sisi klien atau penembolokan data -- Fungsionalitas CloudKit hanya tersedia saat pengguna memiliki koneksi Internet aktif.
Kelas tingkat tertinggi di CloudKit adalah CKContainer. Kontainer CloudKit (terkadang disebut dalam dokumentasi Apple sebagai "kontainer Ubiquity") adalah penyimpanan informasi yang diidentifikasi dengan nama tertentu. Apple menyarankan untuk menggunakan nama formulir "iCloud. {reverse DNS}. {appName}", misalnya, "iCloud.com.mycompany.MyApp". Pengembang harus membuat dan mengonfigurasi kontainer mereka menggunakan Dasbor iCloud, yang tersedia melalui portal pengembang Apple.
Satu CKContainer mungkin berisi kedua data publik, yang dibagikan antara semua instans aplikasi (lihat PublicCloudDatabase), dan data privat, yang berisi data khusus pengguna (lihat PrivateCloudDatabase). Dalam iCloud, data publik disimpan di penyimpanan iCloud aplikasi saat data privat disimpan di penyimpanan iCloud privat pengguna. Publik CKDatabase tersedia untuk semua pengguna aplikasi yang terhubung, baik mereka masuk ke iCloud atau tidak. Privat CKDatabase hanya jika pengguna masuk ke iCloud. Pengembang harus menulis kode mereka sehingga bereaksi dengan baik terhadap perubahan status masuk atau koneksi pengguna.
Objek publik dan privat CKDatabase ini menyimpan rekaman terstruktur. Ini diwakili oleh CKRecord objek. Selain data nilai kunci seperti bidang, rekaman ini dapat menyimpan CKAsset objek besar baik secara langsung (diambil dengan yang berisi CKRecord) atau sebagai referensi (memungkinkan pengambilan data besar yang malas).
Semua CKRecord instans disimpan dalam CKRecordZone. CKRecordZone adalah sesuatu seperti instans database tradisional: dapat berisi beberapa CKRecord penyimpanan yang dapat saling merujuk tetapi tidak untuk menyimpan dalam instans dan CKRecordZone objek lain CKRecordZone dapat digunakan untuk mengoordinasikan operasi atom di beberapa CKRecord toko. Kesamaan dengan instans database tidak universal; misalnya, pengembang dapat menggunakan M:CKDatabase.FetchRecordAsync(CKRecordID) untuk mengambil CKRecord langsung dari CKDatabase tanpa merujuk ke zona. Defaultnya CKRecordZone tersedia melalui P:CloudKit.CKRecordZone.DefaultRecordZone(). Pengembang dapat membuat zona tambahan menggunakan dasbor CloudKit dan menggunakannya untuk mempartisi data mereka secara logis.
Aplikasi CloudKit memerlukan profil provisi dengan com.apple.developer.icloud-services
hak dan Pengidentifikasi Bundel khusus aplikasi (misalnya, "com.mycompany.CloudKitApp"). Pengembang harus membuat dan mengonfigurasi profil provisi tersebut.
Berikut ini menunjukkan beberapa penggunaan umum CloudKit yang bekerja pada satu rekaman:
//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;
}