UIKit में डीप लिंक को हैंडल करने में दो मुख्य तंत्र शामिल हैं: कस्टम URL स्कीम्स (Custom URL Schemes) और यूनिवर्सल लिंक्स (Universal Links)। जबकि दोनों उपयोगकर्ताओं को आपके ऐप के भीतर विशिष्ट सामग्री पर सीधे नेविगेट करने की अनुमति देते हैं, यूनिवर्सल लिंक्स आम तौर पर उनके निर्बाध उपयोगकर्ता अनुभव और बेहतर फॉलबैक व्यवहार के लिए पसंद किए जाते हैं।
1. कस्टम URL स्कीम्स
कस्टम URL स्कीम्स आपको अपने ऐप के URL के लिए एक अद्वितीय प्रीफिक्स (जैसे myapp://product/123) परिभाषित करने की अनुमति देते हैं। जब कोई उपयोगकर्ता इस स्कीम वाले लिंक पर टैप करता है, तो iOS आपके ऐप को लॉन्च करता है।
सेटअप:
-
Xcode में URL स्कीम रजिस्टर करें:
- Xcode में अपना प्रोजेक्ट खोलें।
- प्रोजेक्ट नेविगेटर में अपना प्रोजेक्ट चुनें, फिर अपना लक्ष्य चुनें।
- "Info" टैब पर जाएं।
- "URL Types" सेक्शन के तहत, एक नया URL टाइप जोड़ने के लिए "+" बटन पर क्लिक करें।
- "Identifier" के लिए, आप अपने ऐप का बंडल आईडी (जैसे
com.yourcompany.yourapp) उपयोग कर सकते हैं। - "URL Schemes" के लिए, अपनी इच्छित कस्टम स्कीम (जैसे
myapp) दर्ज करें।
-
AppDelegateयाSceneDelegateमें आने वाले URL को हैंडल करें:-
AppDelegateका उपयोग करने वाले ऐप्स के लिए (पुराने ऐप्स या जो सीन डेलीगेट्स का उपयोग नहीं करते हैं):application(_:open:options:)विधि लागू करें।swift func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { // Parse the URL and navigate to the appropriate content print("Received URL: \(url)") handleDeepLink(url) return true } -
SceneDelegateका उपयोग करने वाले ऐप्स के लिए (iOS 13 और बाद के संस्करण):scene(_:openURLContexts:)याscene(_:continue:)लागू करें।```swift func scene(_ scene: UIScene, openURLContexts URLContexts: Set
) { guard let url = URLContexts.first?.url else { return } print("Received URL: (url)") handleDeepLink(url) } // For Universal Links, you'll also use this method func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL else { return } print("Received Universal Link: (url)") handleDeepLink(url) } ```
-
2. यूनिवर्सल लिंक्स
यूनिवर्सल लिंक्स मानक HTTPS लिंक हैं जो आपके वेबसाइट और आपके ऐप दोनों के लिए काम करते हैं। यदि आपका ऐप इंस्टॉल है, तो लिंक सीधे आपके ऐप में खुलता है; अन्यथा, यह सफारी में खुलता है। यह एक बहुत सहज उपयोगकर्ता अनुभव प्रदान करता है।
सेटअप:
-
apple-app-site-associationफ़ाइल बनाएं:- यह JSON फ़ाइल iOS को बताती है कि आपका ऐप किन URL को हैंडल कर सकता है।
- इस फ़ाइल को अपने वेब सर्वर के रूट पर या
.well-knownसबडायरेक्टरी में होस्ट करें (जैसेhttps://yourdomain.com/apple-app-site-association)। - उदाहरण सामग्री:
json { "applinks": { "apps": [], "details": [ { "appID": "TEAM_ID.com.yourcompany.yourapp", "paths": [ "/product/*", "/settings/*" ] } ] } }अपने वास्तविक मानों के साथTEAM_IDऔरcom.yourcompany.yourappको बदलें।
-
Xcode में एसोसिएटेड डोमेन कैपेबिलिटी सक्षम करें:
- Xcode में, अपना प्रोजेक्ट और लक्ष्य चुनें।
- "Signing & Capabilities" टैब पर जाएं।
- "+ Capability" पर क्लिक करें और "Associated Domains" चुनें।
- आपके ऐप को हैंडल करने वाले प्रत्येक डोमेन के लिए एक प्रविष्टि जोड़ें, जिसे
applinks:से प्रीफिक्स किया गया हो (जैसेapplinks:yourdomain.com)।
-
AppDelegateयाSceneDelegateमें आने वाले URL को हैंडल करें:- यूनिवर्सल लिंक्स को
NSUserActivityऑब्जेक्ट का उपयोग करके हैंडल किया जाता है। AppDelegateके लिए:application(_:continue:restorationHandler:)लागू करें।SceneDelegateके लिए: ऊपर कस्टम URL स्कीम्स अनुभाग में दिखाए गएscene(_:continue:)विधि का उपयोग करें।
- यूनिवर्सल लिंक्स को
3. सामान्य डीप लिंक हैंडलिंग लॉजिक (handleDeepLink फ़ंक्शन)
चाहे आप कस्टम URL स्कीम्स या यूनिवर्सल लिंक्स का उपयोग करें, URL को पार्स करने और अपने ऐप के भीतर नेविगेट करने का मुख्य लॉजिक समान रहता है।
func handleDeepLink(_ url: URL) {
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false) else {
return
}
// Example: myapp://product/123?color=red
// Example: https://yourdomain.com/product/123?color=red
if components.host == "product" {
// Extract product ID from path components or query parameters
let productID = components.path.replacingOccurrences(of: "/", with: "")
let color = components.queryItems?.first(where: { $0.name == "color" })?.value
// Navigate to product detail screen
// (e.g., using a UINavigationController or presenting a new view controller)
if let rootViewController = UIApplication.shared.windows.first?.rootViewController as? UINavigationController {
let productViewController = ProductDetailViewController() // Your custom VC
productViewController.productID = productID
productViewController.selectedColor = color
rootViewController.pushViewController(productViewController, animated: true)
}
} else if components.host == "settings" {
// Navigate to settings screen
if let rootViewController = UIApplication.shared.windows.first?.rootViewController as? UINavigationController {
let settingsViewController = SettingsViewController() // Your custom VC
rootViewController.pushViewController(settingsViewController, animated: true)
}
}
// Add more conditions for different paths/hosts
}
4. सुरक्षा संबंधी विचार
डीप लिंक संभावित हमले का वेक्टर हो सकते हैं। हमेशा सभी URL पैरामीटर को मान्य करें और किसी भी गलत प्रारूप वाले URL को छोड़ दें। डीप लिंक के माध्यम से उपलब्ध क्रियाओं को उन तक सीमित करें जो उपयोगकर्ता डेटा को जोखिम में नहीं डालते हैं, और उन्हें कभी भी सीधे सामग्री हटाने या संवेदनशील जानकारी तक पहुंचने की अनुमति न दें।
5. डीप लिंक का परीक्षण करना
आप डीप लिंक का परीक्षण कर सकते हैं:
* सफारी में कस्टम URL स्कीम दर्ज करके (जैसे myapp://product/123)।
* अपने टर्मिनल में xcrun simctl openurl booted <URL> कमांड का उपयोग करके iOS सिम्युलेटर में URL खोलना।
* सफारी में एक वेबपेज से यूनिवर्सल लिंक्स पर टैप करके।