A digital business card is no longer just an electronic version of a paper card. Modern users expect to exchange contacts with a single tap via NFC, scan a QR code, save to address book without extra clicks, all while staying in the company's brand style. We solve these tasks with a combination of native technologies: vCard 3.0/4.0 generation, CoreNFC and AVFoundation, deep link setup, and analytics. Over 5+ years, we have launched more than 20 mobile projects in the digital contacts space, including integrations with CRM and corporate systems. We guarantee correct operation on all devices running iOS 15+ and Android 10+. Get a consultation for your project.
How to generate vCard and import into contacts?
vCard is an open standard for exchanging contact data, supported by all modern OSes. On iOS we use CNMutableContact + CNContactVCardSerialization, on Android — ContactsContract or manual string generation. Example vCard for a profile:
BEGIN:VCARD VERSION:3.0 FN:John Doe ORG:Company Name TEL;TYPE=CELL:+79001234567 EMAIL:[email protected] URL:https://mycard.app/johndoe PHOTO;ENCODING=b;TYPE=JPEG:/9j/...base64... END:VCARD Import into system contacts: iOS — call CNContactStore.add(_:toContainerWithIdentifier:) with a Contacts permission request; Android — Intent(ContactsContract.Intents.Insert.ACTION) with pre-filled fields (no permission needed — user confirms). Important: on iOS the permission request occurs only once, so handle denial via Settings.
Why is a vCard file better than a direct link?
A direct link opens a web page or app, but does not automatically save the contact. A vCard can be downloaded with one tap and immediately lands in the address book. For cross-platform transfer we use vCard 4.0 with photo and multiple phone support. At the same time, a profile link is also generated — it is used in QR and NFC.
How to implement QR code?
Generate QR with profile URL using built-in tools: CIFilter.qrCodeGenerator on iOS (no dependencies), ZXing or QRose on Android, qr_flutter in Flutter. Minimum QR size in UI — 200x200 dp. Important: the QR must lead to an HTTPS link with a deep link, not to a vCard file — otherwise scanning with a standard camera won't open the app. Scanning is implemented via AVFoundation on iOS and CameraX + ML Kit BarcodeScanning on Android. Permission — only NSCameraUsageDescription on iOS. When scanning we extract the link, check redirect to app deep link.
NFC sharing: when one tap is enough
NFC provides exchange in a single tap without a camera — just bring the devices close. On iOS we use CoreNFC with NDEF record. Example URI write:
let session = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: false) session.begin() // In delegate: func readerSession(_ session: NFCNDEFReaderSession, didDetect tags: [NFCNDEFTag]) { let payload = NFCNDEFPayload.wellKnownTypeURIPayload(url: URL(string: "https://mycard.app/johndoe")!)! let message = NFCNDEFMessage(records: [payload]) tags.first?.writeNDEF(message) { error in ... } } Reading — similar session. Limitations: write available from iPhone 7 (iOS 13+), background reading with universal links — from iOS 14+. On Android — NfcAdapter, NdefMessage, NdefRecord.createUri. Android Beam (deprecated) and direct write to physical tags NTAG213/215. P2P exchange between two Android devices via setNdefPushMessage. See CoreNFC for details.
Comparison of exchange methods:
| Method | Speed | Security | Offline mode |
|---|---|---|---|
| QR code | Medium (needs camera) | Low (link visible) | Yes |
| NFC | High (single tap) | High (invisible) | Yes (on written tag) |
| Direct link | Depends on internet | Low | No |
Comparison of vCard versions:
| Version | Photo support | Multiple phones | Special fields |
|---|---|---|---|
| 3.0 | Yes (base64) | Several | Fax, pager |
| 4.0 | Yes (URI) | Several | Social media, language, time zone |
Profile and business card editor
Fields: name, position, company, multiple phones, email, website, social media, avatar, card background. Avatar uploaded via presigned S3 URL, stored in CDN. Displayed on the card via URLSession/Coil/CachedNetworkImage with placeholder. Design — templates with theme/color selection or custom editor (a separate task for 3–5 days).
What is included in turnkey development
- Mobile app for iOS and Android (native or React Native/Flutter)
- Server side: link generation, analytics (views, vCard downloads)
- NFC write and read integration, QR generation
- Deep link setup (Universal Links / App Links) and Open Graph tags
- Preparation for publication in App Store and Google Play (considering App Store Review Guidelines)
- Operation documentation and team training
- Warranty support after launch
Typical mistakes at the start
- Ignoring privacy policies — App Store will reject.
- Not handling permission denial on iOS.
- Generating vCard without Cyrillic support (UTF-8 encoding is mandatory).
Timelines and cost
Basic app (profile, QR, link, export to contacts) — from 3 to 5 days. With NFC write and read — plus 1–2 days. Full cycle with custom design and server analytics — from 2 weeks. Cost is calculated individually after requirements analysis. Contact us for project evaluation — we will find the optimal solution within 1 day. Order a demo version of the app for testing.







