Skip to content

Latest commit

 

History

History
119 lines (75 loc) · 4.81 KB

File metadata and controls

119 lines (75 loc) · 4.81 KB

Setup Instructions

Everything in this project is self-contained — there are no Swift packages to install, no CocoaPods, no Homebrew dependencies. The only things that require manual action in Xcode are listed below.


1. Set a Development Team (required to run on a physical device)

The project is configured for automatic code signing but no team is pre-selected.

To run on a real iPhone or iPad:

  1. Open iOSIntegrationsWorkshop.xcodeproj in Xcode.
  2. Select the project in the Navigator (the blue icon at the top).
  3. Select the iOSIntegrationsWorkshop target.
  4. Open the Signing & Capabilities tab.
  5. Under Signing, choose your Apple ID team from the Team dropdown.
    • If your Apple ID isn't listed: Xcode → Settings → Accounts → + → Apple ID.
    • A free Apple Developer account is sufficient for running on your own device.

Simulator only? Skip this step — the simulator does not require code signing.


2. iOS Version Requirement

This project targets iOS 26.2 and uses APIs introduced in iOS 17:

API Introduced
requestFullAccessToEvents() iOS 17
requestFullAccessToReminders() iOS 17
@Observable macro iOS 17
ContentUnavailableView iOS 17

Any device or simulator running iOS 17 or later will work. The Xcode deployment target in project.pbxproj is set to 26.2, so Xcode will enforce this automatically.


3. Running in the Simulator vs. a Real Device

Simulator

EventKit works fully in the iOS Simulator. A few things to know:

  • The simulator has its own isolated Calendar and Reminders databases. Your Mac's events and reminders are not visible — the lists start empty.
  • To have sample data to browse, open the Calendar or Reminders app inside the simulator and create a few entries before launching the workshop app.
  • Permission dialogs appear and work normally.

Real Device

Running on a real device gives you access to your actual Calendar and Reminders data. Events and reminders you create will appear in Apple's apps immediately (and sync via iCloud if enabled).


4. Granting and Revoking Permissions During Testing

First run

The permission dialogs appear automatically the first time you tap "Grant Access" in the app. iOS shows each dialog only once.

Resetting permissions (simulator)

If you tapped "Don't Allow" and want to re-test the permission flow:

Option A — Reset the entire simulator:

Device menu → Erase All Content and Settings… This resets all permissions, apps, and data on that simulator.

Option B — Reset only this app's permissions:

Open Settings in the simulator → Privacy & SecurityCalendars or Reminders → toggle the app off, then on.

Option C — Delete and reinstall the app:

Long-press the app icon → Remove App. Reinstalling resets its permissions.

Resetting permissions (real device)

Settings → Privacy & Security → Calendars (or Reminders) → toggle the app off.

To re-trigger the dialog (iOS doesn't show it a second time after a denial), you must delete and reinstall the app, or toggle the permission off then back on in Settings.


5. Privacy Description Strings

The human-readable strings shown in the system permission dialogs are already configured in the project's build settings — no manual Info.plist editing is needed.

To view or change them:

  1. In Xcode, select the project → iOSIntegrationsWorkshop target → Build Settings.
  2. Search for INFOPLIST_KEY_NS.
  3. You'll see:
    • NSCalendarsFullAccessUsageDescription — shown in the Calendar permission dialog.
    • NSRemindersFullAccessUsageDescription — shown in the Reminders permission dialog.

To edit: double-click the value and type a new string. Changes take effect on the next build.

Why build settings instead of Info.plist? The project uses GENERATE_INFOPLIST_FILE = YES, which auto-generates Info.plist at build time from INFOPLIST_KEY_* build settings. This avoids maintaining a separate XML file and keeps all configuration in one place.


6. No Capabilities Required

EventKit (Calendar and Reminders) does not require adding a Capability in Xcode. Unlike frameworks such as HealthKit, CloudKit, or Push Notifications, EventKit only needs Info.plist entries — which are already in place.

You do not need to visit Signing & Capabilities to enable anything for this workshop.


Quick Start Checklist

Task
Open iOSIntegrationsWorkshop.xcodeproj in Xcode
Set Development Team if running on a physical device (skip for simulator)
Select a simulator or connected device in the toolbar
Press ⌘R to build and run
Tap a module card on the home screen
Tap "Grant Access" when prompted