Цифрова візитівка перестала бути просто електронним аналогом паперової картки. Сучасний користувач очікує, що додаток дозволить обмінятися контактами одним дотиком через NFC, відсканувати QR, зберегти візитівку в адресну книгу без зайвих кліків і при цьому залишатися в брендовому стилі компанії. Ми вирішуємо ці завдання комбінацією нативних технологій: генерація vCard 3.0/4.0, робота з CoreNFC та AVFoundation, налаштування deep link'ів та збір аналітики. За понад 5 років ми запустили більше 20 мобільних проєктів у сфері цифрових контактів, включаючи інтеграції з CRM та корпоративними системами. Гарантуємо коректну роботу на всіх пристроях під керуванням iOS 15+ та Android 10+. Отримайте консультацію щодо вашого проєкту.
Як генерувати vCard та імпортувати в контакти?
vCard — відкритий стандарт обміну контактними даними, підтримуваний всіма сучасними ОС. На iOS використовуємо CNMutableContact + CNContactVCardSerialization, на Android — ContactsContract або ручну генерацію рядка. Приклад vCard для профілю:
BEGIN:VCARD VERSION:3.0 FN:Іван Петров ORG:Назва компанії TEL;TYPE=CELL:+79001234567 EMAIL:[email protected] URL:https://mycard.app/ivan PHOTO;ENCODING=b;TYPE=JPEG:/9j/...base64... END:VCARD Імпорт в системні контакти: iOS — виклик CNContactStore.add(_:toContainerWithIdentifier:) із запитом дозволу Contacts; Android — Intent(ContactsContract.Intents.Insert.ACTION) з попередньо заповненими полями (без дозволів — користувач підтверджує). Важливо: на iOS запит доступу відбувається лише один раз, тому обробляємо відмову через налаштування.
Чому vCard-файл кращий за пряме посилання?
Пряме посилання відкриває веб-сторінку або додаток, але не зберігає контакт автоматично. vCard можна завантажити одним натисканням, і він одразу потрапляє в адресну книгу. Для кроссплатформової передачі використовуємо vCard 4.0 з підтримкою фото та декількох телефонів. При цьому посилання на профіль також генерується — воно використовується в QR та NFC.
Як реалізувати QR-код?
Генерація QR з URL профілю — вбудованими засобами: CIFilter.qrCodeGenerator на iOS (без залежностей), ZXing або QRose на Android, qr_flutter у Flutter. Розмір QR в UI — мінімум 200x200 dp. Важливо: QR має вести на HTTPS-посилання з deeplink, а не на vCard-файл — інакше сканування стандартною камерою не відкриє додаток. Сканування реалізовано через AVFoundation на iOS та CameraX + ML Kit BarcodeScanning на Android. Дозвіл — тільки NSCameraUsageDescription на iOS. При скануванні вилучаємо посилання, перевіряємо редирект на deep link додатку.
NFC-шеринг: коли одного дотику достатньо
NFC забезпечує обмін одним дотиком без камери — достатньо піднести пристрої. На iOS використовуємо CoreNFC з NDEF-записом. Приклад запису URI:
let session = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: false) session.begin() // У delegate: func readerSession(_ session: NFCNDEFReaderSession, didDetect tags: [NFCNDEFTag]) { let payload = NFCNDEFPayload.wellKnownTypeURIPayload(url: URL(string: "https://mycard.app/ivan")!)! let message = NFCNDEFMessage(records: [payload]) tags.first?.writeNDEF(message) { error in ... } } Читання — аналогічна сесія. Обмеження: запис доступний з iPhone 7 (iOS 13+), фонове читання з універсальними посиланнями — з iOS 14+. На Android — NfcAdapter, NdefMessage, NdefRecord.createUri. Android Beam (deprecated) і прямий запис на фізичні теги NTAG213/215. P2P-обмін між двома Android через setNdefPushMessage. Докладніше див. CoreNFC.
Порівняємо способи обміну:
| Спосіб | Швидкість | Захист | Офлайн-режим |
|---|---|---|---|
| QR-код | Середня (потрібна камера) | Низька (посилання видно) | Так |
| NFC | Висока (один дотик) | Висока (невидима) | Так (на записаному тезі) |
| Пряме посилання | Залежить від інтернету | Низька | Ні |
Порівняємо версії vCard:
| Версія | Підтримка фото | Кількість телефонів | Спеціальні поля |
|---|---|---|---|
| 3.0 | Так (base64) | Декілька | Факс, пейджер |
| 4.0 | Так (URI) | Декілька | Соцмережі, мова, часовий пояс |
Профіль та редактор візитівки
Поля: ім'я, посада, компанія, декілька телефонів, email, сайт, соцмережі, аватар, фон картки. Аватар завантажується через presigned S3 URL, зберігається в CDN. На картці відображається через URLSession/Coil/CachedNetworkImage з placeholder. Дизайн — шаблони з вибором теми/кольору або кастомний редактор (окрема задача на 3–5 днів).
Що входить в розробку під ключ
- Мобільний додаток під iOS та Android (нативні або React Native/Flutter)
- Серверна частина: генерація посилань, аналітика (перегляди, завантаження vCard)
- Інтеграція NFC-запису та читання, генерація QR
- Налаштування deep link'ів (Universal Links / App Links) та Open Graph тегів
- Підготовка до публікації в App Store та Google Play (з урахуванням App Store Review Guidelines)
- Документація з експлуатації та навчання команди
- Гарантійна підтримка після запуску
Типові помилки на старті
- Ігнорування політик конфіденційності — App Store відхилить.
- Відсутність обробки відмови дозволів на iOS.
- Генерація vCard без підтримки кирилиці (кодування UTF-8 обов'язкове).
Строки та вартість
Базовий додаток (профіль, QR, посилання, експорт в контакти) — від 3 до 5 днів. З NFC-записом та читанням — плюс 1–2 дні. Повний цикл з кастомним дизайном та серверною аналітикою — від 2 тижнів. Вартість розраховується індивідуально після аналізу вимог. Зв'яжіться з нами для оцінки проєкту — підберемо оптимальне рішення за 1 день. Замовте демо-версію додатку для тестування.







