GithubHelp home page GithubHelp logo

cloudkit-sample-sharing's Introduction

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

cloudkit-sample-sharing's People

Contributors

fehguy avatar jagcesar avatar sjrmanning avatar transformableiso avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.