खोज…


टिप्पणियों

  1. जब आप सार्वभौमिक लिंक का समर्थन करते हैं, तो iOS 9 उपयोगकर्ता आपकी वेबसाइट पर एक लिंक पर टैप कर सकते हैं और सफारी से गुजरे बिना आपके इंस्टॉल किए गए ऐप पर मूल रूप से पुनर्निर्देशित हो सकते हैं। यदि आपका ऐप इंस्टॉल नहीं हुआ है, तो आपकी वेबसाइट का लिंक टैप करने से सफारी में आपकी वेबसाइट खुल जाती है।
  2. आम तौर पर, सफारी में क्लिक किए गए किसी भी समर्थित लिंक या UIWebView / WKWebView उदाहरणों में ऐप को खोलना चाहिए।
  3. IOS 9.2 और उससे कम के लिए, यह केवल एक डिवाइस पर काम करेगा। iOS 9.3 भी सिम्युलेटर का समर्थन करता है।
  4. यूनिवर्सल लिंक खोलते समय iOS यूजर की पसंद को याद रखता है। यदि वे सफारी में लिंक खोलने के लिए टॉप-राइट ब्रेडक्रंब पर टैप करते हैं, तो आगे के सभी क्लिक उन्हें सफारी में ले जाएंगे, और ऐप नहीं। वे वेबसाइट पर ऐप बैनर में ओपन का चयन करके डिफ़ॉल्ट रूप से ऐप खोलने के लिए वापस स्विच कर सकते हैं।

सेटअप सर्वर

आपको ऑनलाइन सर्वर चलाने की आवश्यकता है। अपने iOS ऐप को सर्वर के साथ सुरक्षित रूप से जोड़ने के लिए, Apple को आपको एक कॉन्फ़िगरेशन फ़ाइल उपलब्ध कराने की आवश्यकता होती है, जिसे apple-app-site-association कहा जाता है। यह एक JSON फ़ाइल है जो डोमेन और समर्थित मार्गों का वर्णन करती है।

apple-app-site-association फ़ाइल को HTTPS माध्यम से https: // {डोमेन} / ऐप्पल-ऐप-साइट-एसोसिएशन पर बिना किसी रीडायरेक्ट के पहुँच योग्य होना चाहिए।

फ़ाइल इस तरह दिखती है:

{
"applinks": {
    "apps": [ ],
    "details": [
        {
            "appID": "{app_prefix}.{app_identifier}",
            "paths": [ "/path/to/content", "/path/to/other/*", "NOT /path/to/exclude" ]
        },
        {
            "appID": "TeamID.BundleID2",
            "paths": [ "*" ]
        }
    ]
}
}

नोट - apple-app-site-association फ़ाइल नाम के लिए .json को संलग्न न करें।

चाबियाँ इस प्रकार हैं:
apps : इसके मान के रूप में एक खाली सरणी होनी चाहिए, और यह मौजूद होना चाहिए। ऐसा एप्पल चाहता है।
details : शब्दकोशों की एक सरणी है, जो वेबसाइट द्वारा समर्थित प्रत्येक iOS ऐप के लिए है। प्रत्येक शब्दकोश में ऐप, टीम और बंडल आईडी के बारे में जानकारी होती है।

रास्तों को परिभाषित करने के 3 तरीके हैं:
Static : संपूर्ण समर्थित पथ एक विशिष्ट लिंक, जैसे / स्थिर / शब्दों की पहचान करने के लिए हार्डकोड किया गया है
Wildcards : A * का उपयोग गतिशील रास्तों से मेल खाने के लिए किया जा सकता है, जैसे / पुस्तकें / * किसी भी लेखक के पृष्ठ के पथ से मेल खा सकती हैं। ? विशिष्ट पथ घटकों के अंदर, उदाहरण के लिए किताबें / 1? किसी भी किताब से मेल खाने के लिए इस्तेमाल किया जा सकता है, जिसकी आईडी 1 से शुरू होती है।
Exclusions : मिलान किया जा रहा से नहीं शामिल नहीं के साथ एक रास्ता है कि पथ prepending।

जिस क्रम में सरणी में पथ का उल्लेख किया गया है वह महत्वपूर्ण है। पहले के सूचकांकों में उच्च प्राथमिकता होती है। एक बार एक पथ मिलान होता है, मूल्यांकन बंद हो जाता है, और अन्य पथों को अनदेखा कर दिया जाता है। प्रत्येक पथ केस-संवेदी है।


# वेब कोड

वेबसाइट कोड https://github.com/vineetchoudhary/iOS-Universal-Links/tree/gh-pages पर gh- पेज शाखा पाया जा सकता है

एकाधिक डोमेन का समर्थन

ऐप में समर्थित प्रत्येक डोमेन को अपना स्वयं का ऐप्पल-ऐप-साइट-एसोसिएशन फ़ाइल उपलब्ध कराना होगा। यदि प्रत्येक डोमेन द्वारा दी गई सामग्री अलग है, तो संबंधित पथों का समर्थन करने के लिए फ़ाइल की सामग्री भी बदल जाएगी। अन्यथा, उसी फ़ाइल का उपयोग किया जा सकता है, लेकिन इसे हर समर्थित डोमेन पर पहुंच योग्य होना चाहिए।

ऐप-साइट-एसोसिएशन फ़ाइल पर हस्ताक्षर करना

नोट : यदि आपका सर्वर सामग्री की सेवा करने और एप्लिकेशन सेटअप गाइड में कूदने के लिए HTTPS का उपयोग करता है, तो आप इस भाग को छोड़ सकते हैं।

यदि आपका ऐप iOS 9 को लक्षित करता है और आपका सर्वर सामग्री की सेवा के लिए HTTPS का उपयोग करता है, तो आपको फ़ाइल पर हस्ताक्षर करने की आवश्यकता नहीं है। यदि नहीं (उदाहरण के लिए iOS 8 पर हैंडऑफ का समर्थन करते हुए), तो इसे किसी मान्यताप्राप्त प्रमाणपत्र प्राधिकरण से SSL प्रमाणपत्र का उपयोग करके हस्ताक्षरित करना होगा।

नोट : यह ऐप द्वारा आपके ऐप को ऐप स्टोर में जमा करने के लिए प्रदान किया गया प्रमाणपत्र नहीं है। इसे एक तृतीय-पक्ष द्वारा प्रदान किया जाना चाहिए, और यह उसी प्रमाणपत्र का उपयोग करने की सिफारिश की जाती है जो आप अपने HTTPS सर्वर के लिए उपयोग करते हैं (हालांकि इसकी आवश्यकता नहीं है)।

फ़ाइल पर हस्ताक्षर करने के लिए, पहले उसका एक .txt संस्करण बनाएं और सहेजें। अगला, टर्मिनल में, निम्न कमांड चलाएँ:

cat <unsigned_file>.txt | openssl smime -sign -inkey example.com.key -signer example.com.pem -certfile intermediate.pem -noattr -nodetach -outform DER > apple-app-site-association

यह वर्तमान निर्देशिका में हस्ताक्षरित फ़ाइल को आउटपुट करेगा। example.com.key , example.com.pem , और intermediate.pemexample.com.key वे फ़ाइलें हैं जो आपके प्रमाणपत्र प्राधिकारी द्वारा आपको उपलब्ध कराई जाएंगी।

नोट : यदि फ़ाइल अहस्ताक्षरित है, तो उसमें application/json का Content-Type होना चाहिए। अन्यथा, यह application/pkcs7-mime होना चाहिए।

अपने सर्वर को ऐप्पल ऐप खोज सत्यापन उपकरण के साथ मान्य करें
IOS 9 सर्च एपीआई के लिए अपने वेबपेज का परीक्षण करें। एक URL दर्ज करें और Applebot आपके वेबपेज को क्रॉल करेगा और दिखाएगा कि आप कैसे सर्वोत्तम परिणामों के लिए अनुकूलन कर सकते हैं https://search.developer.apple.com/appsearch-validation-tool/

IOS एप्लिकेशन सेट करना (यूनिवर्सल लिंक्स को सक्षम करना)

एप्लिकेशन की ओर सेटअप को दो चीजों की आवश्यकता होती है:

  1. एप्लिकेशन के एंटाइटेलमेंट को कॉन्फ़िगर करना, और प्रोजेक्ट में एसोसिएटेड डोमेन क्षमता को चालू करके सार्वभौमिक लिंक को सक्षम करना।
  2. अपने AppDelegate में आने वाले लिंक को संभालना।

1. एप्लिकेशन के एंटाइटेलमेंट को कॉन्फ़िगर करना और यूनिवर्सल लिंक को सक्षम करना।

अपने ऐप के एंटाइटेलमेंट को कॉन्फ़िगर करने का पहला चरण है, इसे अपने ऐप आईडी के लिए सक्षम करना। एप्पल डेवलपर सदस्य केंद्र में ऐसा करें। प्रमाणपत्र, पहचानकर्ता और प्रोफ़ाइल और फिर पहचानकर्ता पर क्लिक करें। अपनी ऐप आईडी चुनें (यदि आवश्यक हो तो इसे पहले बनाएं), संपादित करें पर क्लिक करें और एसोसिएटेड डोमेन एंटाइटेलमेंट को सक्षम करें।

इसके बाद, संबंधित ऐप आईडी पर क्लिक करके ऐप आईडी उपसर्ग और प्रत्यय प्राप्त करें।

ऐप आईडी उपसर्ग और प्रत्यय ऐप्पल-ऐप-साइट-एसोसिएशन फ़ाइल में एक से मेल खाना चाहिए।

Xcode में अगला, अपने ऐप के लक्ष्य का चयन करें, क्षमताओं पर क्लिक करें और संबद्ध डोमेन को चालू करें पर क्लिक करें। प्रत्येक डोमेन के लिए एक प्रविष्टि जोड़ें जो आपके ऐप का समर्थन करता है, ऐप लिंक के साथ उपसर्ग :

उदाहरण के लिए applinks: YourCustomDomainName.com

जो नमूना ऐप के लिए इस तरह दिखता है:

नोट : सुनिश्चित करें कि आपने एक ही टीम का चयन किया है और सदस्य केंद्र पर पंजीकृत ऐप आईडी के रूप में एक ही बंडल आईडी दर्ज किया है। यह भी सुनिश्चित करें कि एंटाइटेलमेंट फ़ाइल को फ़ाइल का चयन करके Xcode द्वारा शामिल किया गया है और फ़ाइल इंस्पेक्टर में, सुनिश्चित करें कि आपका लक्ष्य जांचा गया है।


2. अपने AppDelegate में आने वाले लिंक को संभालना

यूनिवर्सल लिंक के लिए सफारी से ऐप तक सभी रीडायरेक्ट एप्लिकेशन के ऐपडेलगेट वर्ग में नीचे दी गई विधि से होते हैं। आप इस URL को ऐप में सही कार्रवाई निर्धारित करने के लिए पार्स करते हैं।

[UIApplicationDelegate application: continueUserActivity: restorationHandler:]

उद्देश्य सी

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
    ///Checking whether the activity was from a web page redirect to the app.
    if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb]) {
        ///Getting the URL from the UserActivty Object.
        NSURL *url = userActivity.webpageURL;
        UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        UINavigationController *navigationController = (UINavigationController *)_window.rootViewController;
        if ([url.pathComponents containsObject:@"home"]) {
            [navigationController pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"HomeScreenId"] animated:YES];
        }else if ([url.pathComponents containsObject:@"about"]){
            [navigationController pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"AboutScreenId"] animated:YES];
        }
    }
    return YES;
}  

स्विफ्ट:

func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
      if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
          let url = userActivity.webpageURL!
          //handle url
      }
      return true
  }

iOS एप्लिकेशन कोड

ऐप कोड यहां मास्टर शाखा पाया जा सकता है



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow