Інтеграція шеринга контенту в соціальні мережі з мобільного додатку
Кнопка «Поділитись» у додатку може працювати двома способами: через системний share sheet або через пряму інтеграцію з API кожної мережі. Системний share sheet (iOS UIActivityViewController, Android Intent.ACTION_SEND) — швидше та потребує нуль коду для підтримки нових платформ. Пряма інтеграція з API — дає контроль над контентом: попередньо заповнений текст, конкретний формат, аналітика по платформам.
Системний шеринг
Найшвидший варіант. Користувач сам вибирає платформу з встановлених додатків.
iOS:
func shareContent(text: String, imageURL: URL?, deeplink: URL) {
var activityItems: [Any] = [text, deeplink]
if let imageURL, let imageData = try? Data(contentsOf: imageURL),
let image = UIImage(data: imageData) {
activityItems.append(image)
}
let vc = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
// Исключаємо ненужні типи активності
vc.excludedActivityTypes = [.addToReadingList, .assignToContact]
present(vc, animated: true)
}
На iPad UIActivityViewController потребує popoverPresentationController — без цього крашить на iPad.
Android:
val shareIntent = Intent(Intent.ACTION_SEND).apply {
type = if (imagePath != null) "image/*" else "text/plain"
putExtra(Intent.EXTRA_TEXT, "$text\n$deeplinkUrl")
imagePath?.let { path ->
val imageUri = FileProvider.getUriForFile(context, "${context.packageName}.provider", File(path))
putExtra(Intent.EXTRA_STREAM, imageUri)
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
}
}
startActivity(Intent.createChooser(shareIntent, "Поділитись"))
Flutter: пакет share_plus:
await Share.shareXFiles(
imagePath != null ? [XFile(imagePath)] : [],
text: '$text\n$deeplinkUrl',
subject: postTitle, // для email-клієнтів
);
Пряма інтеграція: Telegram
Найпростіший варіант «прямого» шеринга — через URL-схему Telegram без API:
tg://msg?text=Текст%20поста%20https%3A%2F%2Fapp.example.com%2Fpost%2F123
Якщо Telegram встановлений — відкриває вікно вибору чату з попередньо заповненим текстом. Не потребує OAuth, не потребує SDK.
Для web-preview у Telegram важна Open Graph розмітка на deeplink URL: og:title, og:description, og:image. Telegram Bot API для шеринга через бота — окремий сценарій.
Пряма інтеграція: ВКонтакте
SDK та OAuth-поток описані окремо. Для шеринга без повної авторизації — VK Share Dialog через URL-схему:
vkcom://share?url=https://app.example.com/post/123&title=Заголовок
Або через web-fallback:
https://vk.com/share.php?url=https://app.example.com/post/123&title=Заголовок
Веб-варіант відкривається у SFSafariViewController / Custom Chrome Tab — працює без встановленого ВКонтакте.
Нативні Deep Links для шеринга
Цінність шеринга зростає багатократно якщо посилання відкриває додаток (а не браузер) у одержувача. Реалізація:
- iOS: Universal Links (
apple-app-site-associationна домені) + обробка уapplication(_:continue:restorationHandler:). - Android: App Links (
assetlinks.json+intent-filterзandroid:autoVerify="true"). - Fallback: якщо додаток не встановлений — відкривається web-версія з smart banner «Відкрити у додатку».
Firebase Dynamic Links спрощував це, але Google припинив підтримку сервісу. Альтернативи: Branch.io, Adjust Smart Links, власна реалізація.
Аналітика по шерингам
Відстеження: при створенні share-посилання додаємо UTM-параметри utm_source=app_share&utm_medium=social&utm_content={post_id}. В аналітиці (Firebase, Amplitude) логуємо подію content_shared з параметрами platform, content_type, content_id. По UTM-кликам у web-аналітиці видимо повернення трафіку.
Терміни
Системний share sheet з deeplink — 1 день. Додавання прямого шеринга у Telegram та VK — ще 1 день. Повна система з аналітикою та universal links — 2-3 робочі дня. Вартість розраховується індивідуально.







