Setup
Passpoint onboarding leans on a few privileged iOS capabilities. Turn all of these on before you
call connect(), or issuance and install will fail early.
App Attest capability
App Attest is the only thing Wi-DAS trusts to prove your app is genuine, so it's not optional. Enable it on your app target:
- Signing & Capabilities → + Capability → App Attest, or add the entitlement directly:
<!-- YourApp.entitlements -->
<key>com.apple.developer.devicecheck.appattest-environment</key>
<string>production</string>
App Attest runs on real hardware only. On the Simulator, connect() comes back with
attestationUnavailable. Test issuance on a device.
Hotspot Configuration entitlement
Installing a Passpoint profile goes through NEHotspotConfiguration, which needs the Hotspot
Configuration entitlement. It's a standard managed entitlement, so there's no special Apple
approval to wait on.
- Signing & Capabilities → + Capability → Hotspot Configuration, or:
<key>com.apple.developer.networking.HotspotConfiguration</key>
<true/>
Shared Keychain access group
The client certificate and its Secure Enclave key have to sit in a shared Keychain access group so
the NetworkExtension can pair them into a SecIdentity. Add a Keychain Sharing group and hand it to
the SDK.
The usual group for NetworkExtension sharing is:
<TeamID>.com.apple.networkextensionsharing
Enable Keychain Sharing in Signing & Capabilities, add that group, then pass it when you configure:
let widas = WiDAS(
clientId: "client-acme",
keychainAccessGroup: "<TeamID>.com.apple.networkextensionsharing"
)
Pass nil and the SDK uses the app's default access group. Supply your shared group when the client
identity needs to be visible to the NetworkExtension.
Register your app with Wi-DAS
Attestation is checked against your registered identity. Give your Wi-DAS contact your Team ID
and your app's bundle ID to register against your clientId. Until that's done, even a real
device gets attestationRejected / entitlementMissing.
Checklist
- App Attest capability enabled
- Hotspot Configuration entitlement enabled
- Keychain Sharing group added and passed as
keychainAccessGroup - Team ID + bundle ID registered against your
clientId - Testing on a real device (App Attest is unavailable on the Simulator)
The Entitlements & permissions checklist pulls both platforms together in one place.
Next: Usage.