Bagikan melalui


CloudKit Ruang nama

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