# `mix dala.provision`
[🔗](https://github.com/manhvu/dala_dev/blob/main/lib/mix/tasks/dala.provision.ex#L1)

Registers your app's bundle ID with Apple and downloads an iOS
provisioning profile.

Two modes:

    mix dala.provision                 # development profile (default)
    mix dala.provision --distribution  # App Store distribution profile

Run development provisioning once before your first `mix dala.deploy --native`.
Run distribution provisioning once before your first `mix dala.release`.

## What you need first

  1. **Apple ID** — free at https://appleid.apple.com
  2. **Xcode signed in** with that Apple ID:
     open Xcode → Settings → Accounts → [+] → Apple ID
  3. **Apple Developer Program** — optional for personal device development,
     required for App Store distribution ($99/year).
     Free accounts can deploy to their own devices; profiles expire every
     7 days. Paid accounts get 1-year profiles and App Store access.
     Enroll at https://developer.apple.com/programs/enroll/

Distribution mode requires a paid Developer Program membership.

## What it does (development)

  1. Reads your signing team from the macOS keychain or existing profiles
  2. Generates `ios/Provision.xcodeproj` — a minimal Xcode project used
     only for provisioning (safe to commit)
  3. Generates `ios/DalaProvision.swift` — a two-line SwiftUI stub
  4. Runs `xcodebuild -allowProvisioningUpdates build` which contacts
     Apple to:
     - Register your bundle ID in your developer account (if not registered)
     - Create a development provisioning profile
     - Download it to ~/Library/Developer/Xcode/.../Provisioning Profiles/
  5. Verifies the profile is present

## What it does (distribution)

Same as above, but runs `xcodebuild archive -allowProvisioningUpdates`
with `CODE_SIGN_STYLE=Automatic` against the Release configuration.
Apple creates an App Store provisioning profile (and an Apple
Distribution certificate, if missing) and downloads them to your
keychain + provisioning profile directory.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
