Głębokie linki. Open the app. Fall back gracefully.
Manifesty Universal Links i App Links obsługiwane z Twojej niestandardowej domeny. iOS otwiera Twoją aplikację po dotknięciu; Android robi to samo. Powrót do przeglądarki na desktopie.
- Universal Links (iOS) and App Links (Android) served from your domain
- Deferred deep links — context survives app install
- Smart platform detection with graceful fallbacks
- No SDK required — works with standard OS mechanisms
Universal Links & App Links
Manifest files, auto-served from your domain
iOS Universal Links require an apple-app-site-association file. Android App Links require assetlinks.json. Elido generates and serves both from your custom domain automatically — no separate hosting, no manual file management.
- iOS Universal LinksBundle ID + Team ID → AASA served at /.well-known/ automatically
- Android App LinksPackage name + SHA-256 fingerprint → assetlinks.json, HTTPS enforced
- Smart-link fallbackApp not installed → App Store / Play Store via rule-based routing
- UTM passthroughUTM parameters preserved to store URL — attribution doesn't break
- No SDK in your appOS-level interception only; intent-filter and continueUserActivity
{ "applinks": { "apps": [], "details": [ { "appID": "TEAMID.com.yours.app", "paths": [ "/product/*", "/referral/*", "/invite/*" ] } ] } }
[{ "relation": [ "delegate_permission/ common.handle_all_urls" ], "target": { "namespace": "android_app", "package_name": "com.yourcompany.app", "sha256_cert_fingerprints": [ "AB:12:CD:34:EF:56:..." ] } }]
Served from your custom domain automatically. Configure bundle ID + Team ID (iOS) or package name + SHA-256 fingerprint (Android) in domain settings — Elido generates and hosts both files.
Deferred deep links
Context that survives the install
When the app isn’t installed, the user goes to the store, installs, and opens the app. Deferred deep-linking passes the original deep-link context through that journey so the app can land the user on exactly the right screen after first launch.
- 01
Clicks link
User taps an Elido short link — from email, social, QR.
go.yourcompany.com/p/12345 - 02
No app → Store
App not installed. OS detects from AASA / assetlinks check. Falls back to App Store or Play Store.
iOS → App Store · Android → Play Store - 03
Installs app
User installs from the store. The install referrer carries the click context as a query parameter.
click_id + UTM preserved in referrer URL - 04
Opens app
App opens for the first time. MMP reads install referrer; maps click_id to the install event.
Appsflyer / Adjust / Branch picks it up - 05
Lands on exact page
App routes to the originally linked screen — product/12345 — as if the user had the app already.
product/12345 — context preserved through install
The click_id and UTM parameters from the original short link are passed as query parameters to the store URL. Mobile Measurement Platforms (MMPs) that capture the install referrer — Appsflyer, Adjust, Branch — can match the install to the originating click. Full deferred deep-linking (passing in-app context through install) requires the MMP SDK in your app; Elido covers the link layer.
Smart platform detection
One link. Three redirect paths.
The edge reads User-Agent and platform signals at the redirect layer — before any JS runs. iPhone gets Universal Links, Android gets App Links, desktop gets your web fallback. No JavaScript redirect delay; no client-side platform detection.
- UA parsing at the edge, sub-millisecond
- iOS → Universal Link interception by the OS
- Android → App Link interception via intent-filter
- Desktop → web URL, no store detour
- In-app browsers detected and redirected to system browser
- Composes with smart-link rules — geo + device + deep-link
What you can do
- Apple App Site Association
- Android Asset Links
- Zasady inteligentnych linków dla powrotu do sklepu
- Testowane z adb i xcrun
Jak naprawdę działają głębokie linki — i gdzie się psują
Universal Links i App Links to mechanizmy na poziomie systemu operacyjnego. Konfiguracja jest prosta; przypadki brzegowe nie. To zestawienie obejmuje pełny obraz.
apple-app-site-association serwowane automatycznie z Twojej własnej domeny
Universal Links wymagają pliku apple-app-site-association (AASA) pod adresem /.well-known/apple-app-site-association w Twojej własnej domenie. iOS pobiera ten plik podczas instalacji aplikacji; mapuje on domenę na bundle ID i team ID aplikacji. Jeśli mapowanie jest poprawne, kliknięcie linku HTTPS w Twojej domenie w dowolnej aplikacji iOS (Safari, Mail, Twitter, Instagram) otwiera aplikację bezpośrednio zamiast przeglądarki. Elido automatycznie generuje i serwuje plik AASA ze znanej ścieżki Twojej własnej domeny, w oparciu o bundle ID i team ID skonfigurowane w ustawieniach domeny. Nie musisz hostować pliku oddzielnie. iOS buforuje plik AASA i pobiera go okresowo; jeśli zmienisz konfigurację bundle ID w ustawieniach domeny Elido, nowy plik AASA jest aktywny w kilka sekund, ale urządzenia iOS pobiorą go przy następnym odświeżeniu pamięci podręcznej (zwykle 24-48 godzin lub przy ponownej instalacji aplikacji). Testowane pod kątem walidatora Apple AASA przy każdym wydaniu Elido.
assetlinks.json serwowany automatycznie — odcisk palca SHA-256 z Twojego klucza podpisu
Android App Links wymagają pliku Digital Asset Links pod adresem /.well-known/assetlinks.json w Twojej domenie. Plik ten mapuje domenę na nazwę pakietu aplikacji i odcisk palca SHA-256 Twojego certyfikatu podpisywania. Android weryfikuje ten plik podczas instalacji aplikacji i ponownie w regularnych odstępach czasu. Elido automatycznie serwuje go z Twojej własnej domeny, w oparciu o nazwę pakietu i odcisk SHA-256, które skonfigurujesz. Weryfikacja Androida wymaga HTTPS (wymuszanego przez TLS Elido w domenie własnej), a plik musi odpowiedzieć w ciągu kilku sekund (co również jest obsługiwane). Jeden z powszechnych błędów: różne klucze podpisywania dla wersji debug i release mają różne odciski SHA-256. Skonfiguruj oba odciski w ustawieniach domeny Elido, jeśli testujesz wersję debug; wersje produkcyjne wymagają tylko odcisku wersji release. Testowane za pomocą adb shell pm get-app-links przy każdym wydaniu.
Aplikacja zainstalowana → deep link. Aplikacja nie zainstalowana → sklep. Desktop → web. UTM zachowane przez cały czas.
Łańcuch fallback jest ustawiany na poziomie linku lub domeny w ustawieniach Elido. Dla krótkiego linku z konfiguracją deep-link: jeśli system operacyjny przechwyci kliknięcie (aplikacja zainstalowana, domena zweryfikowana), aplikacja się otwiera. Jeśli nie (aplikacja nie zainstalowana), link otwiera się w przeglądarce; miejscem docelowym w przeglądarce powinien być link do App Store / Play Store lub fallback webowy. Reguły smart-link obsługują to bezproblemowo: skonfiguruj regułę dla iOS → URL App Store, regułę dla Android → URL Play Store i fallback do docelowej strony webowej. Parametry UTM z oryginalnego krótkiego linku są zachowywane w adresach URL fallback, dzięki czemu atrybucja nie zostaje przerwana, gdy użytkownik trafi do sklepu. Odroczone deep-linking (przekazywanie konkretnej ścieżki deep-link przez instalację, tak aby aplikacja otworzyła się na właściwym ekranie po instalacji) wymaga SDK w aplikacji — Elido tego nie zapewnia. W przypadku odroczonego deep-linkingu nadal potrzebujesz Appsflyer, Adjust lub Firebase App Distribution.
Retargeting po instalacji: click_id przekazywany do celu w celu atrybucji
Przy przekierowaniu przez deep-link, Elido przekazuje click_id jako parametr zapytania do adresu URL fallback. Jeśli użytkownik wyląduje w App Store i zainstaluje aplikację, click_id znajduje się w adresie URL polecającym, ale nie jest automatycznie propagowany do aplikacji po instalacji — wymaga to SKAdNetwork na iOS lub SDK do odroczonego deep-linkingu na Androidzie. Co robi Elido: przekazuje click_id i parametry UTM do adresu URL sklepu, aby platforma atrybucji mobilnej (MMP), która rejestruje odsyłacz instalacji, mogła je pobrać. Działa to z Appsflyer i Adjust, jeśli przekażesz click_id w parametrze kampanii adresu URL sklepu. Jeśli nie korzystasz z MMP, click_id w adresie URL sklepu zostaje skutecznie utracony po instalacji.
Migracja z Firebase Dynamic Links (wycofanie w 2025)
Firebase Dynamic Links zostało wycofane przez Google w 2025 roku. Elido może obsłużyć główny schemat: pojedynczy krótki link HTTPS, który otwiera właściwy ekran w zainstalowanej aplikacji, przechodzi do sklepu lub do wersji webowej na desktopie. Skonfiguruj AASA i assetlinks.json w ustawieniach domeny Elido (zastępuje to hosting tych plików przez Firebase), zaktualizuj swoje linki do udostępniania, aby wskazywały na krótkie linki Elido zamiast adresów URL page.link, i skonfiguruj łańcuch fallback za pomocą reguł smart-link. Czego Elido nie replikuje: odroczonego deep-linkingu Firebase (kontekst deep-link po instalacji przez SDK Firebase) oraz linków do dystrybucji aplikacji Firebase. Jeśli Twoja aplikacja mocno polega na odroczonym deep-linkingu, będziesz potrzebować Appsflyer, Adjust lub Branch obok Elido dla warstwy atrybucji. Dla aplikacji, które potrzebują tylko 'otwórz właściwy ekran, jeśli zainstalowano, w przeciwnym razie idź do sklepu', Elido w pełni zastępuje Firebase Dynamic Links.
Zespoły mobilne korzystające z głębokich linków Elido
Nazwy są obecnie symboliczne — prawdziwe nazwy klientów pojawią się tutaj po opublikowaniu studiów przypadku.
“Przenieśliśmy się z Firebase Dynamic Links w tygodniu, w którym ogłoszono ich wycofanie. Konfiguracja AASA i assetlinks.json w Elido zajęła pół dnia. Łańcuch fallback smart-link zastąpił logikę SDK Firebase, którą mieliśmy w aplikacji do rutowania do sklepu.”
“Analityka kliknięć na poziomie linku w deep-linkach pokazała nam, że 35% naszych linków do udostępniania było klikanych na desktopie — nie mieliśmy skonfigurowanego fallbacku webowego. Dodanie fallbacku zajęło 10 minut; współczynnik konwersji linków wzrósł, ponieważ użytkownicy klikający z desktopu mogli teraz dokończyć działanie.”
“Używamy krótkich linków Elido z konfiguracją deep-link w programach poleceń. Przekazywanie UTM do adresu URL App Store oznacza, że nasze MMP poprawnie rejestruje odsyłacz instalacji — atrybucja działa bez niestandardowych prac nad SDK z naszej strony.”
Deep linki Elido vs Branch.io vs Adjust vs Firebase Dynamic Links (wycofane)
Branch i Adjust to pełne platformy atrybucji mobilnej — potężniejsze w przypadku odroczonego deep-linkingu i atrybucji MMP. Elido to właściwe narzędzie, gdy głębokie linki są częścią szerszej konfiguracji skracania linków, a nie głównym produktem.
| Feature | Elido | Branch.io | Adjust |
|---|---|---|---|
| Universal Links (iOS) | Automatycznie obsługiwane AASA z Twojej domeny | W pełni zarządzane w skali | Nie — tylko MMP, nie host deep-linków |
| App Links (Android) | Automatycznie obsługiwane assetlinks.json z Twojej domeny | W pełni zarządzane | Nie |
| Wymagane SDK w aplikacji | Nie — przechwytywanie na poziomie systemu | Tak — Branch SDK | Tak — Adjust SDK |
| Odroczone deep-linking | Nie — wymaga SDK w aplikacji | Tak — główna funkcja | Tak — z SDK Adjust |
| Atrybucja mobilna (MMP) | Przekazywanie Click ID; integracja MMP ręczna | Natywne MMP — integracje z Appsflyer, Kochava | Pełna platforma MMP |
| Przekazywanie UTM do sklepu | Tak — poprzez parametr zapytania w URL fallback | Tak, z kontekstem atrybucji | Tak |
| Analityka kliknięć w linki | ClickHouse — lokalizacja, urządzenie, per-link | Zaawansowana analityka atrybucji mobilnej | Dane o atrybucji instalacji i zdarzeń |
| Zamiennik Firebase Dynamic Links | Tak dla podstawowych wzorców; brak odroczonych deep-linków | Pełny zamiennik, w tym odroczone linki | Częściowy — tylko strona MMP |
Pytania o głębokie linki
Czy potrzebuję SDK Branch lub jakiegokolwiek innego SDK w mojej aplikacji, aby używać głębokich linków Elido?
Nie. Głębokie linki Elido wykorzystują iOS Universal Links i Android App Links — mechanizmy na poziomie systemu operacyjnego. Twoja aplikacja musi jedynie obsługiwać przychodzące adresy URL w standardowy sposób dla iOS (scene:openURLContexts lub application:continueUserActivity) lub Androida (intent-filter w manifeście). Nie instaluje się żadnego SDK firm trzecich; system obsługuje przechwytywanie w oparciu o pliki AASA i assetlinks.json, które Elido serwuje z Twojej domeny.
Jak wygląda proces konfiguracji AASA?
W ustawieniach domeny Elido → Deep links: wprowadź bundle ID swojej aplikacji na iOS (np. com.twojafirma.app) oraz Apple Team ID (10-znakowy ciąg znaków z konta Apple Developer). Elido generuje plik JSON AASA i serwuje go pod adresem /.well-known/apple-app-site-association w Twojej własnej domenie. Przed przesłaniem aplikacji do TestFlight lub App Store sprawdź dostępność pliku za pomocą curl. iOS pobiera plik AASA podczas instalacji aplikacji na urządzeniach z systemem iOS 9+.
Czy mogę mieć wiele aplikacji w jednej domenie?
Tak — plik AASA obsługuje wiele wpisów aplikacji. Skonfiguruj bundle ID i Team ID każdej aplikacji w ustawieniach domeny; Elido wygeneruje połączony plik AASA ze wszystkimi wymienionymi aplikacjami. Android assetlinks.json również obsługuje wiele kombinacji nazwy pakietu i odcisku palca. Typowy przypadek użycia: główna aplikacja i App Clip lub główna aplikacja i rozszerzenie widżetu.
Wycofanie Firebase Dynamic Links — jaka jest ścieżka migracji?
Zastąp krótkie adresy URL page.link krótkimi linkami Elido (Twoja domena własna lub domena współdzielona Elido). Skonfiguruj AASA i assetlinks.json w ustawieniach domeny Elido. Skonfiguruj łańcuch fallback za pomocą reguł smart-link (reguła iOS → App Store, reguła Android → Play Store, fallback → web). Zaktualizuj generowanie linków do udostępniania w swojej aplikacji, aby wywoływało API create_link Elido zamiast Firebase. Co nie podlega migracji: jeśli Twoja aplikacja polega na odroczonym deep-linkingu Firebase (przekazywanie intencji po instalacji), będziesz potrzebować Branch lub Adjust do obsługi tego elementu.
Jak przetestować Universal Links przed opublikowaniem w App Store?
Użyj xcrun simctl openurl booted 'https://go.twojafirma.com/test-slug' z zainstalowaną aplikacją na symulatorze. Na fizycznym urządzeniu z wersją debug długo naciśnij link w Safari i sprawdź, czy pojawia się opcja 'Otwórz w aplikacji'. Apple udostępnia również narzędzie App Association File Validator na stronie developer.apple.com — wklej adres URL swojego AASA, a narzędzie sprawdzi dostępność, Content-Type i poprawność JSON. AASA Elido przechodzi wszystkie trzy testy.
Co to jest odroczone deep-linking i dlaczego Elido tego nie robi?
Odroczone deep-linking (deferred deep-linking) przekazuje kontekst (np. 'użytkownik przeglądał produkt o ID 123') od kliknięcia w link przez proces instalacji aż do pierwszego uruchomienia aplikacji. Wymaga to SDK do fingerprintingu lub atrybucji w aplikacji (Branch, Appsflyer, Adjust), które dopasowuje instalację do kliknięcia podczas procesu instalacji. Elido nie instaluje kodu SDK w Twojej aplikacji; jedynie serwujemy pliki AASA i assetlinks.json. Bez SDK nie ma mechanizmu przekazywania kontekstu przez instalację. Dla podstawowego przypadku 'otwórz właściwy ekran, jeśli zainstalowano', Elido jest wystarczające. Do przekazywania intencji przez instalację potrzebujesz MMP.
Czy mogę używać głębokich linków w domenie współdzielonej Elido (s.elido.me)?
Nie. Universal Links i App Links wymagają Twojej własnej domeny — nie możesz zgłosić *.elido.me jako domeny Universal Link dla swojej aplikacji. Głębokie linki wymagają domeny własnej w planie Pro lub Business. Domenę własną konfigurujesz w swoim AASA i assetlinks.json, a Elido serwuje te pliki z tej właśnie domeny.
Jak obsłużyć przypadek, gdy przeglądarka użytkownika blokuje przechwycenie przez aplikację?
Niektóre przeglądarki (zwłaszcza Chrome na Androidzie w wersjach starszych niż 6.0 oraz niektóre przeglądarki wewnątrz aplikacji, jak na Instagramie) blokują przechwytywanie App Links lub Universal Links. Wtedy użytkownik widzi URL fallback. W przypadku przeglądarek wewnątrz aplikacji: przekieruj najpierw do przeglądarki systemowej za pomocą adresu URL intent (Android) lub monitu dla użytkownika. W przypadku przeglądarek Instagrama / TikToka standardowym podejściem jest wyświetlenie monitu 'dotknij, aby otworzyć w przeglądarce'. Elido nie wstrzykuje tego monitu automatycznie — URL fallback jest Twoim celem docelowym i to Ty kontrolujesz, co się tam dzieje.
Keep reading
Konfiguracja domen własnych — wymagana dla deep-linków; AASA i assetlinks.json serwowane z Twojej nazwy hosta.
iOS → App Store, Android → Play Store, desktop → web — łańcuch fallback przy użyciu reguł smart-link.
Jak zespoły produktowe wykorzystują głębokie linki wraz z wariantami A/B i regułami smart-link.
Integracje MMP — Appsflyer, Adjust i Branch dla odroczonego deep-linkingu obok Elido.
Gotowy, aby wypróbować?
Zacznij od planu darmowego, uaktualnij, gdy będziesz potrzebować niestandardowej domeny.