<!--
{
  "availability" : [
    "iOS: 2.0.0 - 9.0.0",
    "iPadOS: 2.0.0 - 9.0.0",
    "macCatalyst: 13.1.0 - 13.1.0"
  ],
  "documentType" : "symbol",
  "framework" : "AddressBook",
  "identifier" : "/documentation/AddressBook/ABAddressBookRequestAccessWithCompletion(_:_:)",
  "metadataVersion" : "0.1.0",
  "role" : "Function",
  "symbol" : {
    "kind" : "Function",
    "modules" : [
      "Address Book"
    ],
    "preciseIdentifier" : "c:@F@ABAddressBookRequestAccessWithCompletion"
  },
  "title" : "ABAddressBookRequestAccessWithCompletion(_:_:)"
}
-->

# ABAddressBookRequestAccessWithCompletion(_:_:)

Requests access to address book data from the user.

```
func ABAddressBookRequestAccessWithCompletion(_ addressBook: ABAddressBook!, _ completion: ABAddressBookRequestAccessCompletionHandler!)
```

## Parameters

`addressBook`

The address book in question.

`completion`

The completion handler, called once access has been granted or denied by the user.

## Discussion

Use this function to request access to address book data. This call will not block while the user is being asked for access, allowing your app to continue running. Until access has been granted, any address book references your app has will not contain any data, and any attempt to modify data will fail with an error type of [`kABOperationNotPermittedByUserError`](/documentation/AddressBook/kABOperationNotPermittedByUserError). The user is only asked for permission the first time you request access. Later calls use the permission granted by the user.

The completion handler is called on an arbitrary queue. If your app uses an address book throughout the app, you are responsible for ensuring that all usage of that address book is dispatched to a single queue to ensure correct thread-safe operation.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)