$120 tested Claude codes · real before/after data · Full tier $15 one-timebuy --sheet=15 →
$Free 40-page Claude guide — setup, 120 prompt codes, MCP servers, AI agents. download --free →
clskills.sh — terminal v2.4 — 2,347 skills indexed● online
[CL]Skills_
Mobileadvanced

Deep Linking

Share

Implement deep linking and universal links

Works with OpenClaude

You are a mobile app developer implementing deep linking and universal links for iOS and Android apps.

What to check first

  • Verify your app has a registered domain (e.g., example.com) with HTTPS support
  • Check that you have entitlements file configured for iOS (Xcode project settings)
  • Confirm Android AndroidManifest.xml exists and you can modify it
  • Ensure you have assetlinks.json generator tool or can manually create the JSON file

Steps

  1. Create assetlinks.json in your Android project at /.well-known/assetlinks.json on your web server with your app's SHA256 fingerprint
  2. Generate your Android app's SHA256 certificate fingerprint using keytool -list -v -keystore your-keystore.jks
  3. Add intent filters to AndroidManifest.xml for each deep link pattern your app handles
  4. Configure iOS associated domains in Xcode under Signing & Capabilities → Associated Domains
  5. Create apple-app-site-association (AASA) file at /.well-known/apple-app-site-association on your server
  6. Implement URL routing logic in your app to parse deep links and navigate to correct screens
  7. Test deep links on physical devices or emulators using adb shell am start or xcrun simctl openurl
  8. Verify both platforms correctly handle link fallbacks when app is not installed

Code

// iOS: Handle deep links in SceneDelegate or AppDelegate
import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    func scene(_ scene: UIScene, 
               willConnectTo session: UISceneSession, 
               options connectionOptions: UIScene.ConnectionOptions) {
        
        // Handle deep link when app launches
        if let userActivity = connectionOptions.userActivities.first,
           userActivity.activityType == NSUserActivityTypeBrowsingWeb,
           let url = userActivity.webpageURL {
            handleDeepLink(url: url)
        }
    }
    
    func scene(_ scene: UIScene, 
               continue userActivity: NSUserActivity) {
        // Handle deep link when app is already running
        if userActivity.activityType == NSUserActivityTypeBrowsingWeb,
           let url = userActivity.webpageURL {
            handleDeepLink(url: url)
        }
    }
    
    func handleDeepLink(url: URL) {
        guard let components = URLComponents(url: url, resolvingAgainstBaseURL: true) else {
            return
        }
        
        // Parse path: example.com/products/12345
        let pathComponents = components.path.split(separator: "/").map(String.init)
        
        if pathComponents.count >= 2 && pathComponents[0] == "products" {
            let productId = pathComponents[1]
            navigateToProduct

Note: this example was truncated in the source. See the GitHub repo for the latest full version.

Common Pitfalls

  • Treating this skill as a one-shot solution — most workflows need iteration and verification
  • Skipping the verification steps — you don't know it worked until you measure
  • Applying this skill without understanding the underlying problem — read the related docs first

When NOT to Use This Skill

  • When a simpler manual approach would take less than 10 minutes
  • On critical production systems without testing in staging first
  • When you don't have permission or authorization to make these changes

How to Verify It Worked

  • Run the verification steps documented above
  • Compare the output against your expected baseline
  • Check logs for any warnings or errors — silent failures are the worst kind

Production Considerations

  • Test in staging before deploying to production
  • Have a rollback plan — every change should be reversible
  • Monitor the affected systems for at least 24 hours after the change

Quick Info

CategoryMobile
Difficultyadvanced
Version1.0.0
AuthorClaude Skills Hub
mobiledeep-linkingnavigation

Install command:

curl -o ~/.claude/skills/deep-linking.md https://claude-skills-hub.vercel.app/skills/mobile/deep-linking.md

Related Mobile Skills

Other Claude Code skills in the same category — free to download.

Want a Mobile skill personalized to YOUR project?

This is a generic skill that works for everyone. Our AI can generate one tailored to your exact tech stack, naming conventions, folder structure, and coding patterns — with 3x more detail.