Contact Search via API
The ContactsManager SDK provides powerful contact search capabilities through its API layer. This section explains the available search endpoints and their usage.Comprehensive Search
ThesearchContacts
method provides full-featured search functionality with pagination support:
Quick Search
For real-time search-as-you-type scenarios, use the optimizedquickSearch
method:
Field-Specific Search
You can target specific contact fields in your search:name
: First, middle, last name, nicknameemail
: Email addressesphone
: Phone numbersaddress
: Physical addressesorganization
: Company name and departmentnotes
: Contact notes and additional information
Contact Search UI
The ContactsManager SDK provides a built-in search and select UI that you can easily integrate into your app.Using the Contact Picker
Installation
The contact picker is included in the ContactsManager SDK for iOS. No additional installation is required.Configuration
Configure the picker usingContactSelectionOptions
:Usage
Present the contact picker from your view controller:Features
- Beautiful native UI following iOS design guidelines
- Real-time search across all contact fields
- Support for single or multiple selection
- Field-type filtering (phone, email, etc.)
- Selection limit enforcement
- Customizable appearance
- Automatic permission handling
Contact Selection Options
TheContactSelectionOptions
struct/object allows you to configure:
selectionMode
: Single or multiple contact selectionfieldType
: Filter contacts by field type (phone, email, any)maxSelectionCount
: Maximum number of contacts that can be selected
Thread Safety
Overview
The Contact model in Swift is built on SwiftData and has important thread safety considerations that must be followed carefully.Key Thread Safety Rules
- Contact objects must be accessed on the thread where they were created
- Search methods return Contact objects that are bound to the main thread
- Any modifications to Contact objects must be performed on the main thread
- Background operations should use
@MainActor
or dispatch to the main thread for Contact updates
Best Practices
- Always use
@MainActor
where accessing Contact objects