Будь-який «шпаргальник URL-схем», що в топі пошуку, написаний кілька років тому, і половина того, що він перелічує, уже нічого не відкриває. Посилання, побудоване за вчорашнім патерном fb://profile/<username>, скопійованим із поста, який був точним на момент написання, сьогодні Facebook не відкриє. Схеми, які досі працюють, — набагато коротший список, ніж ті, що досі копіюють, і різниця має значення, бо зламана схема не видає помилку. Вона просто нічого не робить або скочується в браузер.
Саме ця поведінка з тихим збоєм і робить цю таблицю вартою того, щоб тримати її актуальною, а не покладатися на пам’ять. Неправильний запис схеми не кидає помилку, яку розробник спіймав би на тестуванні; він просто не розв’язується, і на пристрої, де застосунок-ціль випадково встановлено, а відвідувач випадково опиняється десь прийнятним, зламаний rewrite може лишатися непоміченим місяцями.
Підтверджено робочі, і як побудований кожен
Сім rewrite підтверджено робочими:
| HTTPS-посилання | Власна схема | Примітка |
|---|---|---|
https://t.me/<bot>?start=<payload> | tg://resolve?domain=<bot>&start=<payload> | |
https://t.me/<channel> | tg://resolve?domain=<channel> | |
https://instagram.com/<username> | instagram://user?username=<username> | |
https://facebook.com/profile.php?id=<n> | fb://profile/<n> | потрібен числовий id, див. нижче |
https://open.spotify.com/track/<id> | spotify:track:<id> | через двокрапку, не через слеш |
https://twitch.tv/<channel> | twitch://stream/<channel> | |
https://twitch.tv/<ch>/v/<id> | twitch://video/v<id> | префікс v перед id обов’язковий |
Telegram. І посилання на бота, і посилання на канал мапляться на tg://resolve: параметр domain несе юзернейм бота чи каналу, а start — будь-який payload, що ви передаєте. Той самий rewrite обробляє і звичайне посилання на канал, і посилання на бота з payload, різниця лише в тому, чи присутній start.
Instagram. instagram://user?username=<username> — це пряма заміна юзернейма на юзернейм, числовий id не потрібен. Це єдиний профільний deep link у цій таблиці, який обходить проблему з ідентифікатором, описану нижче.
Facebook. Заміна fb://profile/<n> виглядає так само прямою, але працює лише якщо у вас уже є числовий id. Самого юзернейма для цього не досить, і причина — нижче.
Spotify і Twitch. Обидва використовують власну схему винятково як резолвер для content id, що вже присутній у https-URL, без кроку пошуку і без конвертації формату — просто інший конверт навколо того самого ідентифікатора. Режим збою для обох — синтаксис, а не дозволи. Переплутайте двокрапку чи префікс v, і посилання буде malformed, а не просто непідтримуваним.
Пара з Twitch, поставлена поруч, показує, чому синтаксична деталь важить більше, ніж здається. Посилання на стрім, https://twitch.tv/<channel>, переписується в twitch://stream/<channel> — пряма заміна. Посилання на VOD, https://twitch.tv/<channel>/v/<id>, переписується в twitch://video/v<id>, де сам id набуває v, якого не мав у вихідному URL. Скопіюйте патерн для стріму на VOD-посилання і випустіть цей префікс — і отримана схема посилатиметься на id, якого не існує, а не просто буде malformed на рівні синтаксису.
У справжньої схеми TikTok є пастка прямо поруч
iOS-схема TikTok — snssdk1233, названа саме так у власній SDK-документації TikTok. Пастка — snssdk1128. Це Douyin, інший застосунок з іншого стору, і два ідентифікатори достатньо близькі в скопійованому списку, щоб їх переплутати було легкою й непомітною помилкою. Посилання, побудоване на неправильному з них, TikTok не відкриє. Якщо у відвідувача випадково встановлено Douyin, воно відкриє зовсім інший застосунок.
Підтверджено відсутні, словами самих вендорів
У наступних немає робочої схеми, і в кожного — причина, названа самим вендором, а не непояснена прогалина:
| Застосунок | Чому немає схеми, яку можна використати |
|---|---|
| X | Немає підтримуваних URL-схем. Існує deep link для складання DM, але він потребує ручної відправки й платного рівня Account Activity API, а цей API виводять з ужитку. |
| LINE | Прибрав line:// у власній документації, спеціально щоб запобігти takeover-атакам, коли запускається не той застосунок. |
| У власному центрі довідки прямо каже, що не публікує шаблони для третіх сторін. | |
| YouTube | Актуальна документація Google каже, що Universal Links уже відкривають застосунок на iOS 9+, і не документує схему. |
| Snapchat | У повному переліку продуктів платформи для розробників немає жодного messaging- чи chat API. |
Його механізм payload — це QR scene_id, а не клікабельне посилання. | |
| Не документує схему. |
Дві проблеми з ідентифікатором, а не один баг
Facebook та Instagram провалюються з однієї й тієї ж причини, тільки з протилежних боків.
fb://profile/ потребує числового id, а не юзернейма, і Graph API прямо відмовляється шукати за юзернеймом, повертаючи помилку #803. Якщо у вас є лише юзернейм, підтримуваного шляху до числового id, якого вимагає схема, немає.
В Instagram — дзеркальна проблема. URL поста чи reels несе shortcode, а схема потребує внутрішнього числового media id, і shortcode не конвертується в нього жодним задокументованим шляхом. Дві різні платформи, два різні напрямки, та сама форма збою: ідентифікатор, який дає публічний URL, — не той ідентифікатор, якого хоче схема.
Практичний наслідок однаковий для обох: числовий id треба захопити й зберегти в той момент, коли він справді доступний, а не виводити на льоту з юзернейма чи shortcode, за якими ви ведете routing. Правило rewrite, яке припускає, що зможе конвертувати одне в інше в момент кліку, будується на шляху пошуку, якого не існує.
Чому список короткий і лишається коротким
Варто назвати цю закономірність прямо. Вузьке покриття на iOS вище — переважно свідомий вибір самих вендорів, а не прогалина в чиїйсь реалізації. LINE прибрав line:// навмисно, посилаючись на ризик takeover. Документація YouTube вказує на Universal Links як заміну, а не на відсутню функцію. Pinterest прямо каже, що не публікуватиме шаблони схем для третіх сторін. Читати список схем, що коротшає, як серію провалів реалізації — означає неправильно розуміти, що насправді відбувається. Це скоординований перехід до Universal Links, і для вендорів на відсутній стороні цієї таблиці він переважно вже завершений.
Це формулювання важливе для того, як ви плануєте навколо цього списку. Схема, якої немає сьогодні, бо вендор свідомо вивів її з ужитку, — не кандидат на повторне відкриття наступного кварталу так, як це можливо для незадокументованої прогалини. Будуйте логіку routing так, щоб таблиця відсутніх сприймалась як усталений стан для кожного вендора, а не список, який варто далі прощупувати.
Коли схеми немає, fallback теж не нейтральний
Для застосунків без робочої схеми практичний fallback — посилання на стор:
iOS: https://apps.apple.com/app/id<numeric id>
Цей числовий id не вгадати, і для кількох застосунків він взагалі нікуди корисного не веде. Microsoft вивів споживчий Skype з ужитку в травні 2025 року, тож лістингу, на який можна послатися, більше не існує. Застосунок також може лишатися цілком встановлюваним на Android, коли його лістинг на iOS уже зник — і тоді запис чинний на одній платформі, а store fallback на іншій стає мертвим вантажем. У Shopee немає єдиної глобальної сторінки в сторі, тож store fallback скерував би десять із одинадцяти ринків на лістинг не тієї країни. Пропустити fallback і відправити всіх на вебсторінку — правильніша поведінка саме тут, а не компроміс.
Таблиця схем — лише половина проблеми routing. Друга половина — знати, коли store fallback справді допомагає, а коли він просто додає мертве посилання з більшою впевненістю, ніж заслуговує. Шар редіректу DarkCore трактує рядки схем і store fallback як дані, а не захардкожені припущення, саме тому, що ця таблиця не стоїть на місці.
Тримайте цей список актуальним, а не завченим
Кожен рядок вище — це rewrite, який власні системи вендора приймають сьогодні, у 2026 році, а не патерн, який колись працював. Таблиця відсутніх так само актуальна. Кожна причина — заявлена позиція вендора, а не припущення, вписане, бо ніхто не зміг знайти документацію. Ставтеся до обох половин як до швидкопсувних. Вендор, що переходить з власної схеми на Universal Links, як уже зробили YouTube і LINE, не розсилає повідомлення про deprecation кожному сайту, що скопіював його старий патерн.
Перевіряйте заново за актуальною документацією самого вендора, перш ніж rewrite потрапить у конфіг routing, який працюватиме без нагляду місяцями, а не за першим-ліпшим шпаргальником із пошуку. Сім rewrite і сім відсутностей вище — ті, за якими є джерело на момент написання; усе інше належить до кошика «невідомо», доки й у нього не з’явиться джерело.
FAQ
Чи запрацює колись fb://profile/<username>?
Ні, і не через те, як побудована схема. Graph API повертає помилку #803 на пошук за юзернеймом. Підтримуваного способу дістатися від юзернейма до числового id, якого вимагає схема, немає.
Чи є в TikTok еквівалент схеми на Android?
Android взагалі не використовує цей механізм схем. Deep links там розв’язуються через таргетинг пакета intent:// — інший ланцюжок, ніж той, що покриває ця таблиця.
Чому у цій таблиці немає WhatsApp чи Messenger?
Ця таблиця покриває застосунки, доступні через переписану власну схему на iOS. Чи виживає ідентифікатор кліку під час переходу в messaging-застосунок — окреме питання зі своїми умовами, і воно не підпадає під той самий поділ «працює/відсутнє», що й відкриття самого застосунку.