cloudkit 0.2.0

Safe Rust bindings for Apple's CloudKit framework — iCloud databases and sync on macOS
Documentation
use cloudkit::prelude::*;

fn main() {
    let notification = CKNotificationInfo::new()
        .with_alert_body("Update available")
        .with_desired_keys(vec!["title".into(), "updatedAt".into()])
        .with_content_available(true);

    let query = CKQuerySubscription::new(
        "Task",
        "TRUEPREDICATE",
        "task-query-sub",
        QuerySubscriptionOptions::FIRES_ON_RECORD_CREATION,
    )
    .with_notification_info(notification.clone());

    let zone = CKRecordZoneSubscription::new(CKRecordZoneID::new("Tasks", "__defaultOwner__"), "task-zone-sub")
        .with_notification_info(notification.clone());
    let database = CKDatabaseSubscription::new("task-db-sub").with_notification_info(notification);

    println!("query={} zone={} database={}", query.base().subscription_id(), zone.base().subscription_id(), database.base().subscription_id());
    println!("✅ subscription area OK");
}