Интеграция шеринга контента в социальные сети из мобильного приложения
Кнопка «Поделиться» в приложении может работать двумя способами: через системный 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 для шеринга через бота — отдельный сценарий.
Прямая интеграция: VKontakte
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 рабочих дня. Стоимость рассчитывается индивидуально.







