Skip to content

isabella232/cloudkit-sample-sharing

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudKit Samples: Sharing

⚠️ For the new Swift 5.5 concurrency APIs, see the swift-concurrency branch ⚠️

Goals

This project demonstrates sharing CloudKit records across user accounts. It shows how to initiate a share from one user account, and accept the share and subsequently view shared data on another account.

Prerequisites

Setup Instructions

  • Ensure the simulator or device you run the project on is signed in to an Apple ID account with iCloud enabled. This can be done in the Settings app.
  • If you wish to run the app on a device, ensure the correct developer team is selected in the “Signing & Capabilities” tab of the Sharing app target, and a valid iCloud container is selected under the “iCloud” section.

Using Your Own iCloud Container

  • Create a new iCloud container through Xcode’s “Signing & Capabilities” tab of the Sharing app target.
  • Update the containerIdentifier property in Config.swift with your new iCloud container ID.

How it Works

User One: Initiating the Share

  • On either a device or simulator with a signed-in iCloud account, User One creates a new Contact record through the UI with a name and phone number. The Contact is saved to the user’s private iCloud database with the addContact(name:phoneNumber:completionHandler) function in ViewModel.swift.

  • After the Contacts list is refreshed, the newly added Contact will appear under the “Private” section of the UI.

  • Tapping the share button on the Contact list entry creates a CKShare object and writes it to the database with the createShare(contact:completionHandler) function in ViewModel.swift. After the share is created, the CloudSharingView is displayed which wraps UICloudSharingController in a SwiftUI compatible view. This view allows the user to configure share options and send or copy the share link to share with User Two.

User Two: Accepting the Share Invitation

  • On a separate device with a different signed-in iCloud account, User Two accepts the share by following the link provided by User One.

  • The link initiates a prompt on the user’s device to accept the share, which launches the Sharing app and accepts the share through a database operation defined in SceneDelegate’s userDidAcceptCloudKitShareWith delegate callback.

  • After the share is accepted and the UI is refreshed, the shared Contact will display in User Two’s Contacts list in the “Shared” section. fetchSharedContacts(completionHandler:) in ViewModel.swift shows how Contacts in shared database zones are fetched.

Further Reading

About

No description, website, or topics provided.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%