Інтеграція контактів (ContactsKit) в iOS-додаток

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Інтеграція контактів (ContactsKit) в iOS-додаток
Простий
від 1 дня до 3 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Інтеграція Contacts Framework в iOS-додаток

Apple переіменувала та переписала API контактів починаючи з iOS 9 — старий AddressBook фреймворк давно deprecated, актуальний — Contacts.framework. Незважаючи на це, у проектах до сих пір зустрічається ABAddressBook, який у iOS 18 вже не компілюється без попереджень та зовсім зникне.

Дозволи: що змінилося в iOS 18

З iOS 18 з'явився новий тип доступу — Limited Access. Користувач тепер може вибрати конкретні контакти, які дозволяє читати додатку, замість того щоб давати доступ до всієї адресної книги. CNAuthorizationStatus отримав новий кейс: .limited.

Якщо додаток не обробляє .limited — він мовчки отримує пустий список контактів у частини користувачів iOS 18 і розробники не розуміють чому. Потрібно додати NSContactsLimitedUsageDescription в Info.plist та обробляти цей кейс явно: показувати UI з поясненням, пропонувати розширити доступ через CNContactStore.requestAccess.

Типові задачі та реалізація

Вибірка контактів з потрібними полями через CNContactFetchRequest:

let store = CNContactStore()
let keysToFetch: [CNKeyDescriptor] = [
  CNContactGivenNameKey as CNKeyDescriptor,
  CNContactFamilyNameKey as CNKeyDescriptor,
  CNContactPhoneNumbersKey as CNKeyDescriptor,
  CNContactEmailAddressesKey as CNKeyDescriptor,
  CNContactThumbnailImageDataKey as CNKeyDescriptor
]
let request = CNContactFetchRequest(keysToFetch: keysToFetch)
request.sortOrder = .familyName

try store.enumerateContacts(with: request) { contact, stop in
  // обробляємо поконтактно, не грузимо все в пам'ять одразу
}

enumerateContacts переважніше unifiedContacts(matching:keysToFetch:) при великій адресній книзі: він не завантажує всі контакти в пам'ять одночасно. На iPhone з 3000+ контактів другий варіант дає помітний spike по пам'яті.

Додавання нового контакту з CNMutableContact та збереження через CNSaveRequest — стандартний шлях. При оновленні існуючого контакту потрібно отримати його mutableCopy() — змінення оригіналу CNContact кидає виняток, тому що він immutable.

Що входить у роботу

  • Налаштування дозволів під iOS 17 та iOS 18 (Limited Access)
  • Вибірка контактів з потрібними полями, сортування
  • Пошук за ім'ям, телефоном, email через CNContactVCardSerialization або предикати
  • Створення та оновлення контактів
  • Відображення системного CNContactPickerViewController
  • Обробка дублів через унікацію (unifiedContact)

Графік

1–3 дні залежно від обсягу операцій. Базовий read-only доступ з пошуком — 1 день. Повний CRUD з обробкою Limited Access та тестуванням — до 3 днів. Вартість розраховується індивідуально.