How to undisplay `Private Access` in `Contacts Access` when i use `CNContactPickerViewController`?

In iOS 18, i use CNContactPickerViewController to access to Contacts (i know it is one-time access).

After first pick up one contact, the Setting > Apps > my app > Contacts shows Private Access without any option to close it.

Is there any way to close it and undisplay it ?

I tried to uninstall and reinstall my app, but it didn't work.

The way to reproduce the issue is as follows:

My app doesn’t declare any permissions for accessing Contacts ( I didn’t set up the Privacy - Contacts Usage Description key in Info.plist ).

It just uses CNContactPickerViewController to bring up the contact picker, lets the user select a contact, and grabs the result.

After that, you’ll see the Private Access message appears, as shown in the image.

It only shows up on iOS 18; it doesn't happen on earlier versions.

You said:

My app doesn’t declare any permissions for accessing Contacts ( I didn’t set up the “Privacy - Contacts Usage Description” key in Info.plist).

It just uses CNContactPickerViewController to bring up the contact picker, lets the user select a contact, and grabs the result.

After that, you’ll see the “Private Access” message appears, as shown in the image.

Yes, this flow will result in “Private Access” to be shown in settings. I suspect the idea is to let the user know that they shared one or more contacts with this app. It is not easily removed (which is probably a good thing for the user).

IIRC, simply uninstalling and reinstalling is not sufficient to remove this “Private Access” setting. I think you have to reset the device to remove that. Or request access via CNContactStore and you should get the limited/full UX in settings.

@Alex_Lyu

The system displays Private Access when your app accesses contacts in the contact picker view controller while the app has never requested access to contact data.

To have access to the data, your app must receive approval from the person after calling requestAccess(for:) or requestAccess(for:completionHandler:) with an entity type contacts. For more information, see Request access to contact data.

Is there any way to close it and undisplay it ?

The Private Access text disappears once your app has full access to contacts. For more information, see CNAuthorizationStatus.

Is there any official explanation or doc I can refer to

Please file a Feedback report against the Contacts documentation to request this feature to be documented.

How to undisplay `Private Access` in `Contacts Access` when i use `CNContactPickerViewController`?
 
 
Q