Universal Link — এটি কী, কাজের নীতি এবং সেটআপ

লেখক: IT Sectr প্রকাশিত: 2026-05-14 পড়ার সময়: 9 মিনিট

Universal Link হল একটি Apple প্রক্রিয়া (iOS 9+) যা Safari এড়িয়ে যাওয়ার মাধ্যমে ওয়েব লিঙ্ক সরাসরি অ্যাপে খোলার অনুমতি দেয়। অ্যাপ ইনস্টল না থাকলে, লিঙ্কটি ব্রাউজারে নির্বিঘ্নে খোলে। শব্দটি Apple 2015 সালে WWDC-তে Handoff এবং Continuity ইকোসিস্টেমের অংশ হিসেবে প্রবর্তন করে। Apple Developer অনুসারে, Universal Link নির্বাচন ডায়ালগ ছাড়াই ওয়েব এবং নেটিভ অ্যাপের মধ্যে একীভূত ব্যবহারকারীর অভিজ্ঞতা প্রদান করে।

মুখ্য বিষয়

  • Universal Link — একটি স্ট্যান্ডার্ড https লিঙ্ক যা অ্যাপ (iOS 9+) বা ওয়েবসাইট (fallback) খোলে
  • apple-app-site-association — সার্ভারে একটি JSON ফাইল যা ডোমেনের অ্যাপের সাথে সংযোগ নিশ্চিত করে
  • নিরাপত্তা — শুধুমাত্র ডোমেন মালিক লিঙ্ক অ্যাসোসিয়েট করতে পারেন, স্কিম ইন্টারসেপশন বাদ দিয়ে
  • একীভূত URL — একটি লিঙ্ক ওয়েবপেজ এবং অ্যাপে প্রবেশ উভয় হিসাবে কাজ করে
  • Handoff এবং Spotlight — Universal Link Apple অনুসন্ধান এবং ডিভাইসের মধ্যে ধারাবাহিকতার সাথে একীভূত হয়

Universal Link হল একটি স্ট্যান্ডার্ড HTTPS লিঙ্ক যেমন https://example.com/page, যা iOS ডিভাইস থেকে ট্যাপ করলে Safari-এর পরিবর্তে ইনস্টল করা অ্যাপ খোলে। Custom URL Scheme থেকে প্রধান পার্থক্য: Universal Link-এ কাস্টম স্কিম (myapp://) নিবন্ধনের প্রয়োজন নেই — এটি একটি সাধারণ ডোমেন ব্যবহার করে। এটি URL Scheme hijacking সমস্যা দূর করে, যেখানে যেকোনো অ্যাপ একই স্কিম নিবন্ধন করতে পারে।

Apple WWDC 2015-এ iOS 9-এর অংশ হিসেবে Universal Link প্রবর্তন করে। প্রক্রিয়াটি Handoff এবং Spotlight ইকোসিস্টেমের অংশ হয়ে ওঠে: Universal Link শুধু ব্রাউজারেই নয়, Spotlight অনুসন্ধান ফলাফল, Mail, Messages এবং অন্যান্য সিস্টেম অ্যাপেও কাজ করে। এছাড়াও, Universal Link watchOS এবং macOS-এ সমর্থিত — ব্যবহারকারী Mac-এ লিঙ্কের মাধ্যমে iPhone-এ অ্যাপ খুলতে পারেন।

মূল সুবিধা: একীভূত URL. ডেভেলপার দুটি ভিন্ন লিঙ্ক (একটি ওয়েবের জন্য, অন্যটি অ্যাপের জন্য) পরিচালনা করেন না। Universal Link হল একই https লিঙ্ক। অ্যাপ ইনস্টল থাকলে — অ্যাপ খোলে। না থাকলে — একই লিঙ্ক Safari-তে সাধারণ ওয়েবপেজ হিসাবে খোলে। এটি ট্রাফিক না হারিয়ে আদর্শ fallback প্রদান করে।

Universal Link প্রক্রিয়ায় তিনটি ধাপ থাকে: অ্যাসোসিয়েশন যাচাইকরণ, লিঙ্ক হ্যান্ডলিং এবং ব্রাউজার fallback। সঠিক কার্যক্রমের জন্য প্রতিটি ধাপ গুরুত্বপূর্ণ। অ্যাসোসিয়েশন কনফিগার না করা থাকলে, iOS লিঙ্কটিকে Safari-তে সাধারণ রিডিরেক্ট হিসাবে প্রক্রিয়া করে। আসুন প্রতিটি ধাপ বিস্তারিত দেখি।

অ্যাসোসিয়েশন যাচাইকরণ (Association Verification)

লিঙ্কে প্রথম ট্যাপে, iOS সার্ভার থেকে https://example.com/.well-known/apple-app-site-association-এ apple-app-site-association ফাইল ডাউনলোড করে। ফাইলটিতে অ্যাপের Team ID এবং Bundle ID সহ JSON, পাশাপাশি অ্যাপের খোলা উচিত এমন পাথের তালিকা থাকে। iOS এই ফাইল ক্যাশ করে এবং পর্যায়ক্রমে এর সতেজতা পরীক্ষা করে (অ্যাপ আপডেট, ডিভাইস রিস্টার্টে)।

JSON ফাইল apple-app-site-association রিডিরেক্ট ছাড়াই HTTPS-এর মাধ্যমে অ্যাক্সেসযোগ্য হতে হবে। সার্ভারকে Content-Type: application/json রিটার্ন করতে হবে। গুরুত্বপূর্ণ: ফাইলের .json এক্সটেনশন নেই — iOS এটি কঠোরভাবে /.well-known/apple-app-site-association-এ খোঁজে। Apple CDN-এ Universal Link সমর্থন যোগ করার এবং robots.txt দ্বারা ফাইল ব্লক না করা হয়েছে তা যাচাই করারও সুপারিশ করে।

json
// apple-app-site-association — ন্যূনতম কনফিগারেশন
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAMID.com.example.app",
                "paths": ["/product/*", "/profile/*", "/search"]
            }
        ]
    }
}

appID Team ID + Bundle ID (TEAMID.com.example.app) হিসাবে গঠিত হয়। paths হল URL প্যাটার্নের একটি অ্যারে যা অ্যাপ পরিচালনা করবে। *, ? এবং NOT নোটেশন ব্যবহার করা যেতে পারে: ["NOT /admin/*", "/product/*"]। পাথগুলি গণনার ক্রমে পরীক্ষা করা হয়: প্রথম মিল আচরণ নির্ধারণ করে। পাথ মেল না খেলে — লিঙ্ক Safari-তে খোলে।

লিঙ্ক হ্যান্ডলিং (Link Handling)

সফল অ্যাসোসিয়েশন যাচাইকরণের পর, iOS লিঙ্কটি অ্যাপে পাঠায়। হ্যান্ডলিং AppDelegate-এ NSUserActivity-র জন্য application(_:continue:restorationHandler:) পদ্ধতির মাধ্যমে, অথবা SceneDelegate-এ scene(_:continue:) মাধ্যমে করা হয়। ডেভেলপার NSUserActivityTypeBrowsingWeb টাইপের NSUserActivity অবজেক্ট পান, URL বের করেন এবং সংশ্লিষ্ট স্ক্রিনে নেভিগেট করেন।

swift
// AppDelegate-এ Universal Link হ্যান্ডলিং
func application(
    _ application: UIApplication,
    continue userActivity: NSUserActivity,
    restorationHandler: @escaping UIUserActivityRestorationHandler
) -> Bool {
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
          let url = userActivity.webpageURL
    else { return false }

    // URL অনুযায়ী স্ক্রিনে নেভিগেট করুন
    DeepLinkRouter.navigate(to: url)
    return true
}

উপরের উদাহরণে DeepLinkRouter একটি কাস্টম ক্লাস যা URL পার্স করে এবং সংশ্লিষ্ট নেভিগেশন কোঅর্ডিনেটর কল করে। SwiftUI-র জন্য, হ্যান্ডলিং onOpenURL পদ্ধতি বা environment(\.openURL) মডিফায়ারের মাধ্যমে করা হয়। শুধু ফোরগ্রাউন্ড লঞ্চ নয়, বরং অ্যাপ চলমান না থাকার অবস্থা (cold start)ও পরিচালনা করা গুরুত্বপূর্ণ: এই ক্ষেত্রে Universal Link লঞ্চ অপশনের মাধ্যমে অ্যাপ খোলে।

ব্রাউজার Fallback (Browser Fallback)

অ্যাপ ইনস্টল না থাকলে, iOS স্বয়ংক্রিয়ভাবে Safari-তে Universal Link খোলে। এটি Custom URL Scheme থেকে মূল পার্থক্য: ব্যবহারকারী কোনো ত্রুটি দেখতে পান না। Fallback হল একই ডোমেনের স্ট্যান্ডার্ড ওয়েবপেজ। ডেভেলপার এই পৃষ্ঠায় App Store লিঙ্ক, পণ্যের তথ্য বা বিকল্প সামগ্রী রাখতে পারেন।

গুরুত্বপূর্ণ: fallback iOS স্তরে কাস্টমাইজ করা যায় না। iOS কেবল Safari-তে URL খোলে। অ্যাপ ইনস্টল আছে এবং নেই এমন ব্যবহারকারীদের জন্য আলাদা সামগ্রী দেখাতে, Smart App Banner (Safari-র জন্য মেটা ট্যাগ যা অ্যাপ খোলার প্রস্তাব দেয়) বা JavaScript ইনস্টলেশন ডিটেকশন ব্যবহার করুন। Apple Universal Link-এর মাধ্যমে ইনস্টলেশন অ্যাট্রিবিউশনের জন্য SKAdNetwork-ও প্রদান করে।

Universal Link এবং ঐতিহ্যবাহী Deep Link (Custom URL Scheme) একই সমস্যা সমাধান করে, কিন্তু আর্কিটেকচার এবং নিরাপত্তায় মৌলিকভাবে ভিন্ন। Custom URL Scheme হল একটি কাস্টম প্রোটোকল (myapp://) যা Info.plist-এ নিবন্ধিত হয়। যেকোনো অ্যাপ একই স্কিম (myapp://) নিবন্ধন করতে পারে, এবং iOS নির্ধারণ করতে পারে না কোনটি ‘আসল’। একে URL Scheme hijacking বলে।

Universal Link ডোমেন যাচাইকরণের মাধ্যমে hijacking সমস্যা সমাধান করে। শুধুমাত্র ডোমেন মালিক তার সার্ভারে apple-app-site-association রাখতে পারেন, একটি নির্দিষ্ট Bundle ID-র সাথে সংযোগ নিশ্চিত করে। দুটি অ্যাপ একই Universal Link নিবন্ধন করতে পারে না: দ্বন্দ্ব দেখা দিলে, iOS শেষ ইনস্টল করা অ্যাপকে অগ্রাধিকার দেয় অথবা Safari খোলে।

আরেকটি পার্থক্য: Fallback। Custom URL Scheme-এর কোনো fallback নেই — অ্যাপ ইনস্টল না থাকলে ব্রাউজার ত্রুটি দেখায়। Universal Link ওয়েবসাইট খোলে। একীভূত URL মানে লিঙ্কের SEO মান সংরক্ষিত থাকে (Google লিঙ্ক ইন্ডেক্স করে), এবং যেকোনো ডিভাইসের ব্যবহারকারী প্রাসঙ্গিক সামগ্রী পান। Universal Link হল deep link থেকে unified link-এ বিবর্তনমূলক পদক্ষেপ।

বৈশিষ্ট্যCustom URL SchemeUniversal Link
ফরম্যাটmyapp://pathhttps://domain/path
যাচাইকরণনাapple-app-site-association
নিরাপত্তাহাইজ্যাকিং-এর জন্য ঝুঁকিপূর্ণশুধুমাত্র ডোমেন মালিক
Fallbackত্রুটিSafari-তে ওয়েবসাইট
iOS সংস্করণiOS 3+iOS 9+

সেটআপ Universal Link-এ সার্ভার-সাইড এবং ক্লায়েন্ট-সাইড অংশ অন্তর্ভুক্ত। সার্ভার-সাইড — https://domain/.well-known/apple-app-site-association-এ apple-app-site-association ফাইল রাখা। ক্লায়েন্ট-সাইড — Xcode-এ Associated Domains-এ ডোমেন নিবন্ধন করা (Capabilities → Associated Domains → applinks:example.com)। তারপর, অ্যাপ স্বয়ংক্রিয়ভাবে নির্দিষ্ট ডোমেনের জন্য সব Universal Link পায়।

সেটআপ পদক্ষেপ:

  1. তৈরি করুন সঠিক appID (TeamID.BundleID) এবং paths সহ apple-app-site-association
  2. রাখুন ফাইলটি সার্ভারে /.well-known/-এ .json এক্সটেনশন ছাড়া
  3. যাচাই করুন প্রাপ্যতা: curl https://domain/.well-known/apple-app-site-association
  4. যোগ করুন Associated Domains-এ ডোমেন (Xcode Capabilities)
  5. বাস্তবায়ন করুন NSUserActivity (AppDelegate বা SceneDelegate) মাধ্যমে হ্যান্ডলিং
  6. পরীক্ষা করুন বাস্তব ডিভাইসে (সিমুলেটর অ্যাসোসিয়েশন যাচাই করে না)

ডিবাগিং Universal Link iOS ডেভেলপারদের জন্য একটি সাধারণ মাথাব্যথা। কাজ না করা লিঙ্কের প্রধান কারণ: apple-app-site-association ফাইল HTTPS-এর মাধ্যমে অ্যাক্সেসযোগ্য নয়, ভুল appID, Content-Type application/json নয়, /.well-known পাথ থেকে রিডিরেক্ট, পুরনো সংস্করণের ক্যাশিং (Settings → Developer → Associated Domains Development-এর মাধ্যমে রিসেট)। Apple অ্যাসোসিয়েশন পরীক্ষার জন্য Apple Developer Console-এ Validation Checker টুল সরবরাহ করে।

Branch এবং অন্যান্য MMP প্ল্যাটফর্ম Universal Link সেটআপ সহজ করে: তারা স্বয়ংক্রিয়ভাবে apple-app-site-association জেনারেট করে এবং তাদের নিজস্ব ডোমেনে হোস্ট করে। ডেভেলপারকে শুধু Associated Domains-এ Branch ডোমেন যোগ করতে এবং SDK ইন্টিগ্রেট করতে হয়। এটি বিশেষ করে স্টার্টআপের জন্য সুবিধাজনক যাদের AASA ফাইল হোস্ট করার জন্য নিজস্ব সার্ভার অবকাঠামো নেই।

সীমাবদ্ধতা এবং সামঞ্জস্যতা

Universal Link-এর বেশ কিছু সীমাবদ্ধতা আছে। প্রথম: apple-app-site-association ফাইল কঠোরভাবে HTTPS-এর মাধ্যমে অ্যাক্সেসযোগ্য হতে হবে (HTTP সমর্থিত নয়)। দ্বিতীয়: লিঙ্কটি Associated Domains-এ নির্দিষ্ট ডোমেনে নির্দেশ করতে হবে। ক্রস-ডোমেন Universal Links কাজ করে না — প্রতিটি ডোমেনের জন্য Capabilities-এ পৃথক এন্ট্রি এবং পৃথক AASA ফাইল প্রয়োজন। তৃতীয়: Universal Link WKWebView-এ কাজ করে না — শুধু Safari এবং সিস্টেম কম্পোনেন্টে।

সামঞ্জস্যতা: iOS 9.0+ (Universal Link), watchOS 6.0+ (Handoff Universal Link), macOS 10.15+ (Catalyst এবং Mac অ্যাপ)। পুরনো iOS সংস্করণে, লিঙ্ক Safari-তে খোলে। এর মানে iOS 8-এ (1% এর কম ডিভাইস) Universal Link কাজ করবে না। পুরনো ডিভাইসের জন্য fallback হিসাবে Custom URL Scheme সমর্থন করার সুপারিশ করা হয় যদি আপনার দর্শকদের মধ্যে পুরনো সংস্করণের ব্যবহারকারী থাকে।

iOS 16+ পরিবর্তন: Apple SwiftUI-র জন্য Universal Link হ্যান্ডলিং উন্নত করেছে। বিলম্বিত প্রক্রিয়াকরণ ক্ষমতা সহ একটি নতুন environment(\.openURL) মডিফায়ার প্রবর্তন করা হয়েছে। iOS 16 SFSafariViewController-এর মাধ্যমেও অ্যাপে Universal Links খোলার অনুমতি দেয়। iOS 16 ব্যবহারকারীদের জন্য, সম্পূর্ণরূপে SwiftUI Universal Link হ্যান্ডলিং-এ স্যুইচ করার সুপারিশ করা হয়, শুধুমাত্র পশ্চাদগামী সামঞ্জস্যের জন্য AppDelegate কোড রেখে।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

Universal Link কীভাবে Custom URL Scheme থেকে আলাদা?

Universal Link একটি স্ট্যান্ডার্ড HTTPS URL ব্যবহার করে এবং সার্ভারে ফাইলের মাধ্যমে যাচাই করা হয়। Custom URL Scheme যাচাইকরণ ছাড়া কাস্টম প্রোটোকল (myapp://) ব্যবহার করে, যা একই স্কিম নিবন্ধনকারী অন্য অ্যাপ দ্বারা আটকানোর ঝুঁকিপূর্ণ করে তোলে।

apple-app-site-association কোথায় রাখবেন?

ফাইল HTTPS সার্ভারের রুটে /.well-known/apple-app-site-association-এ (.json এক্সটেনশন ছাড়া) রাখা হয়। সার্ভারকে Content-Type: application/json রিটার্ন করতে হবে। গুরুত্বপূর্ণ: কোনো রিডিরেক্ট নয়, ফাইল সরাসরি অ্যাক্সেসযোগ্য হতে হবে।

Universal Link কেন অ্যাপ খুলছে না?

প্রধান কারণ: AASA ফাইলে ভুল Team ID বা Bundle ID, ফাইল HTTPS-এর মাধ্যমে অ্যাক্সেসযোগ্য নয়, রিডিরেক্ট, ভুল Content-Type, পুরনো সংস্করণের ক্যাশিং। Developer → Associated Domains Development-এর মাধ্যমে পরীক্ষা করুন এবং ডিভাইস রিস্টার্ট করে ক্যাশ সাফ করুন।

আমি কি ওয়েবসাইট ছাড়া Universal Link ব্যবহার করতে পারি?

না — Universal Link-এর জন্য apple-app-site-association হোস্ট করা HTTPS সার্ভার প্রয়োজন। ডোমেন ছাড়া, Universal Link কাজ করে না। বিকল্প: Custom URL Scheme (কম নিরাপদ) বা নিজস্ব ডোমেন সহ থার্ড-পার্টি সার্ভিস (Branch, Firebase)।

Universal Link কি Android-এ কাজ করে?

না — Universal Link iOS, iPadOS, watchOS এবং macOS-এর জন্য Apple-এর এক্সক্লুসিভ প্রযুক্তি। Android-এ, সমতুল্যকে App Link (Android 6.0+) বলা হয়, যা apple-app-site-association-এর পরিবর্তে Digital Asset Links (assetlinks.json) ব্যবহার করে।

সারাংশ

  • Universal Link — একটি https লিঙ্ক যা iOS 9+-এ অ্যাপ বা fallback হিসাবে Safari-তে ওয়েবসাইট খোলে
  • apple-app-site-association — সার্ভারে JSON ফাইল যা ডোমেনের অ্যাপের সাথে সংযোগ যাচাই করে
  • নিরাপত্তা — Custom URL Scheme-এর বিপরীতে, Universal Link থার্ড-পার্টি অ্যাপ দ্বারা আটকানো থেকে সুরক্ষিত
  • একীভূত URL — একটি লিঙ্ক অ্যাপ ইনস্টল আছে এবং নেই উভয় ব্যবহারকারীর জন্য কাজ করে
  • Handoff এবং Spotlight — Universal Link Apple Continuity ইকোসিস্টেমের সাথে একীভূত হয়
  • সেটআপ সার্ভার-সাইড (AASA ফাইল) এবং ক্লায়েন্ট-সাইড (Associated Domains + NSUserActivity) অন্তর্ভুক্ত করে
  • পরীক্ষা শুধুমাত্র বাস্তব ডিভাইসে — সিমুলেটর ডোমেন অ্যাসোসিয়েশন যাচাই করে না

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন