Цифровая визитка перестала быть просто электронным аналогом бумажной карточки. Современный пользователь ожидает, что приложение позволит обменяться контактами в одно касание через 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 день. Закажите демо-версию приложения для тестирования.







