Sharing & Deep Linking
Deep linking allows users to share content and navigate directly to specific videos, channels, or screens within your app. Vidori automatically generates shareable links with rich social media previews.
How Deep Linking Works
Section titled “How Deep Linking Works”When a user shares content from your app, Vidori generates a link with the /og/ prefix:
https://yourapp.vidori.co/og/movie/abc123When someone opens this link:
- Social media crawlers (Facebook, Twitter, etc.) receive HTML with Open Graph meta tags — title, description, and poster image
- Mobile users with the app installed — iOS/Android intercepts the URL via Universal Links / App Links, strips the
/og/prefix, and navigates directly to the content - Desktop/web users — The deep-link service redirects to the web app’s detail page
Share link: https://yourapp.vidori.co/og/movie/abc123 ↓┌──────────────────────────────────────────────────────┐│ Social crawler → OG meta tags (title, image, desc) ││ iOS/Android app → Opens native app to details page ││ Desktop browser → Redirects to web app ││ App not installed → Opens in mobile browser │└──────────────────────────────────────────────────────┘Supported Deep Link Paths
Section titled “Supported Deep Link Paths”Content Links
Section titled “Content Links”| Link Type | URL Pattern | Opens |
|---|---|---|
| Movie details | /movie/{movieId} | Movie detail page |
| Series details | /series/{seriesId} | Series detail page |
| News article | /news/{newsId} | News detail page |
| Channel | /channel/{channelId} | Channel detail page |
| Asset details | /details/{assetId} | Auto-detected detail page |
| Watch | /watch/{assetId} | Video player (movies, episodes, channels) |
Authentication Links
Section titled “Authentication Links”| Link Type | URL Pattern | Opens |
|---|---|---|
| CTV Login | /ctv-login/{verificationCode} | TV device login verification |
| CTV Register | /ctv-register/{verificationCode} | TV device registration |
Platform Configuration
Section titled “Platform Configuration”Deep linking is configured automatically at build time for each tenant.
Universal Links are configured during the CI/CD build process:
iosSetup.shpopulates the Associated Domains entitlement with tenant-specific domains- The URL scheme (
co.vidori.{tenantId}) is set in Info.plist - AppDelegate.mm includes
RCTLinkingManagerhandlers for both URL schemes and Universal Links
The apple-app-site-association file is served by the deep-link service at /.well-known/apple-app-site-association. Set the APPLE_TEAM_ID and APPLE_BUNDLE_ID environment variables on the deep-link service.
App Links are configured during the CI/CD build process:
androidSetup.shsets deep link schemas and host patterns instrings.xml- AndroidManifest.xml includes intent filters with
autoVerify="true"for HTTPS URLs - Both regional (
{tenant}.{region}.{env}.vidori.co) and non-regional ({tenant}.{env}.vidori.co) hosts are supported
The assetlinks.json file is served by the deep-link service at /.well-known/assetlinks.json. Set the ANDROID_PACKAGE_NAME and ANDROID_CERT_FINGERPRINTS environment variables on the deep-link service.
Web deep links work through the SPA’s client-side routing (UrlLinking.ts). When a non-crawler browser opens a share link, the deep-link service redirects to the appropriate SPA route (e.g., /Home/Details?id={assetId}).
Sharing Features
Section titled “Sharing Features”Native Apps (iOS/Android)
Section titled “Native Apps (iOS/Android)”On native apps, the share button uses the device’s native share sheet (Share.share() API). This gives users access to all sharing options on their device — messaging apps, social media, email, clipboard, etc.
The share button appears on:
- Movie detail pages
- Series detail pages
- News detail pages
- Channel detail pages
Web App (Desktop/Mobile Browser)
Section titled “Web App (Desktop/Mobile Browser)”On web, the share button shows a popup with social platform options:
| Option | Description |
|---|---|
| Copy Link | Copies the share URL to clipboard |
| Twitter/X | Opens Twitter with pre-filled post |
| Opens Facebook share dialog | |
| Opens WhatsApp with the link | |
| Opens email client with the link |
Social Media Previews
Section titled “Social Media Previews”When links are shared on social media, the deep-link service generates rich preview cards using Open Graph meta tags:
| Tag | Content |
|---|---|
| og:title | Content title |
| og:description | Content description |
| og:image | Poster image (1280x720) |
| og:type | video.movie, video.tv_show, article, etc. |
| og:site_name | Your app name |
| twitter:card | summary_large_image |
Custom Domain Support
Section titled “Custom Domain Support”Share links use your tenant’s domain by default (e.g., https://{tenantId}.vidori.co/og/...). If a verified custom domain is configured, share links will use it instead (e.g., https://app.yourbrand.com/og/...).
Testing Deep Links
Section titled “Testing Deep Links”- Share an asset from the app to get a share link
- Test on iOS device — verify the app opens and navigates to the correct content
- Test on Android device — verify the same
- Open the link in a desktop browser — verify redirect to the web app
- Verify social media previews by pasting the link into Twitter, Facebook, or LinkedIn
- Verify the AASA and assetlinks.json files:
curl https://yourdomain/.well-known/apple-app-site-associationcurl https://yourdomain/.well-known/assetlinks.json
Deferred Deep Links
Section titled “Deferred Deep Links”For first-time app installs, Vidori supports deferred deep linking:
- iOS: The app queries the backend for a pending deep link URI on first launch
- Android: Uses the Play Install Referrer API to retrieve the deep link from the install referrer
This allows users who install the app after clicking a share link to be taken directly to the shared content on first launch.