A call blocker that never asks for your contacts
Every spam blocker on iPhone runs inside the same permission model. The difference between them is which parts they ask for. This page walks through what Nixring asks for, which is close to nothing, and what that costs.
The mechanism
A list is published, not a call inspected
It is easy to assume a blocker watches your calls. On iPhone it cannot. Apple hands third-party apps a publishing interface, not a monitoring one.
iOS starts the extension
When you switch the app on in Settings, or when it asks for a reload, iOS launches the Call Directory extension in its own sandbox.
It reads a file and hands over numbers
The extension opens a JSON file in the app's shared container, builds the two sorted lists iOS requires, one for blocking and one for labelling, and passes them across. It makes no network request.
iOS takes over and the extension ends
From then on iOS matches incoming calls itself. The extension is not woken for a call, receives no callback, and is told nothing about what happened.
That is why there is no call history in the app, and why the shield screen counts numbers rather than blocked calls. There is nothing to count, because nothing is ever reported back.
Permissions
What the app asks for, and what it does not
- Contacts. Never requested. The app declares no contacts usage description and contains no address book code, so the prompt never appears.
- Microphone, calls, call history. Never requested. No iOS API offers them to a blocker in the first place.
- Location. Never requested.
- Notifications. Not needed. The blocking is done by iOS and stays silent.
One prompt does appear in the free version: the tracking prompt that Apple requires before an advertising SDK may use the advertising identifier. That is the honest cost of a free tier funded by ads, and it is visible on the App Store privacy label as identifiers and usage data used to track you. Nixring Pro removes the advertising.
Neither version has an account. There is no sign up, no email, no password and no server holding a profile. Nixring Pro is unlocked through your App Store purchase, which the app checks with Apple rather than with a service of its own.
The trade
What this design gives up
Refusing the data means refusing the product it makes possible. Nixring cannot name an unknown caller, cannot warn you about a number nobody has told it about, and cannot learn from what you block. Those features are not missing because of a small team. They are missing because they require exactly the pipeline this design leaves out.
The comparison with Truecaller sets out where that trade goes against Nixring, and the free tier page shows how small the starting list really is.
Questions
Frequently asked
Why do call blocker apps want my contacts?
Two reasons. To tell a known caller from an unknown one before deciding what to do, and to grow a directory that maps numbers to names. The second is what makes a large caller ID database possible, and it is the reason the question comes up so often.
Does Nixring ask for contacts access?
No. The app declares no contacts usage description and contains no code that reads the address book, so iOS never shows the permission prompt. The only usage description the app declares is the tracking prompt required for advertising in the free version.
What does the Call Directory extension see?
A list of numbers from a file on your phone, and nothing else. iOS starts it, asks for the list, receives it, and shuts it down. It is not started when a call arrives, is not told who called, and is not told what was rejected.
Does anything leave the phone?
In Nixring Pro, one request for a public JSON file that everyone downloads identically, which carries nothing about you. In the free version the Google advertising SDK also communicates, and the App Store privacy label reflects that with identifiers and usage data used for tracking. Neither path can carry your contacts, your calls or your messages, because the app never has them.
Related