iOS step 1: prerequisites#
Do this page before you open Xcode. One step here has a waiting period, so start it today even if you build the rest next week.Total setup for iOS call screening is about half a day of work, plus the waiting.The checklist#
Why a free account is not enough#
The block list is stored in an App Group so your app and its extension can share it. Apple does not allow App Groups on a free Personal Team. There is no way around this.Decide which extensions you need#
You add one Xcode target per feature. Check which ones apply to you.| Your minimum iOS version | Add this |
|---|
| iOS 18 or later only | Live Caller ID Lookup extension |
| iOS 15 to 17 as well | Both: Live Caller ID Lookup and Call Directory |
Live Caller ID names and blocks callers as the phone rings, on iOS 18 and later. Call Directory blocks numbers from a list downloaded in advance, and works on older versions. Call Directory cannot show a name.Register your identifiers#
Your extensions must use bundle identifiers nested under your app. If your app is com.yourco.app, use these:| Identifier | Purpose |
|---|
com.yourco.app | Your app |
com.yourco.app.LiveLookup | Live Caller ID extension |
com.yourco.app.CallDirectory | Call Directory extension |
group.com.yourco.app | App Group, shared by all three |
A nested identifier is not a style choice. iOS finds your extension by its position under your app. If you name it something else, your app never appears in Settings > Apps > Phone > Call Blocking & Identification, and no error tells you why.Create the App Group first, under Identifiers > App Groups. Then create the three App IDs. On the app and the Call Directory App ID, tick App Groups and Keychain Sharing.Leave the Live Caller ID extension App ID with no capabilities for now.Start relay enrollment now#
Skip this only if you will never install the app any way other than from Xcode directly onto your own phone.A build from Xcode talks to our servers directly. A build from TestFlight or the App Store does not. Apple routes it through a relay that hides your users' IP addresses, and Apple only does that for a service it has on record.Enrollment is not instant, so start it first.1.
Your Live Caller ID extension bundle identifier, for example com.yourco.app.LiveLookup.
2.
Roughly how much traffic you expect, per continent.
What we send back, within a few business days:Three URLs reserved for you: a service URL, a token issuer URL, and a gateway URL.
A validation token for your Apple registration.
What you then do: register those URLs on the
Identity and Trust page of the CloudKit Console, under your own Apple team, with your extension bundle identifier.We prove ownership of those hosts to Apple with a DNS record on our side, so you do not touch DNS.Get your client key#
This is the client_key, not the sdk_key. They are different values with different jobs.What you cannot test in a simulator#
Nothing on this path works in a simulator. iOS only asks your extension during a real incoming call on real hardware.Budget one iPhone on iOS 18 or later, and a second phone to call it from.Next#
Modified at 2026-07-29 21:29:11