iOS यूनिवर्सल लिंक इन-ऐप नहीं खुल रहे हैं


109

इसलिए मैंने इस ट्यूटोरियल का ठीक से पालन किया और दिए गए मानों का उपयोग करें: https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

लिंक निर्देशिका में Apple एसोसिएशन फ़ाइल भी तैयार है:
WEB_PAGE:PORT_NUMBER/apple-app-site-association

सब कुछ इस तरफ स्थापित होता दिख रहा है।

मैंने एंटाइटेलमेंट जोड़े हैं, प्रोविजनिंग प्रोफाइल अपडेट की है, और सब कुछ सेट अप किया है।

जब मैं अपने डिवाइस पर ऐप चलाता हूं, और लिंक को http://WEB_PAGE:PORT_NUMBERखोलता हूं , तो यह हमेशा सफारी को खोलता है।

मेरे पास निम्नलिखित विधि में भी ब्रेकपॉइंट हैं:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler

लेकिन झिझक।

क्या किसी ने इसे पूरा किया है? क्या मुझे कुछ याद आ रहा है?


2
यहाँ चेकआउट सुनिश्चित करें कि आप किसी भी कदम न बनाने के लिए stackoverflow.com/questions/35609667/...
विनीत चौधरी

जवाबों:


189

कुछ संभावित मुद्दे हैं।

  1. अपने डोमेन को इस लिंक सत्यापनकर्ता में चिपकाने की कोशिश करें और सुनिश्चित करें कि कोई समस्या नहीं है: https://limitless-sierra-4673.herokuapp.com/ (ShortStuffSushi का श्रेय - रेपो देखें )

  2. यदि आपके पास आपके एंटाइटेलमेंट में निर्दिष्ट डोमेन पर ठीक से सेट नहीं किया गया है, तो iOS सिस्टम लॉग में एक त्रुटि संदेश देता है। यह ओएस लॉग में दफन है, एप्लिकेशन लॉग नहीं। त्रुटि संदेश जैसा दिखेगा Sep 21 14:27:01 Derricks-iPhone swcd[2044] <Notice>: 2015-09-21 02:27:01.878907 PM [SWC] ### Rejecting URL 'https://examplecustomdomain.com/apple-app-site-association' for auth method 'NSURLAuthenticationMethodServerTrust': -6754/0xFFFFE59E kAuthenticationErr। त्रुटि संदेश से खींचा यहाँ , जल्दी (अधूरा) टीएलएस के लिए CloudFlare उपयोग करने के निर्देशों यहाँ

  3. मेरे व्यक्तिगत परीक्षण में, सफारी में एक लिंक पर क्लिक / टाइपिंग ने कभी भी ऐप को सीधे नहीं खोला है। अन्य एप्लिकेशन (iMessage, मेल, स्लैक, आदि) से क्लिक करने से है काम किया। अन्य लोगों ने बताया कि Google खोज परिणामों में लिंक पर क्लिक करने से ऐप सीधे खुल गया है।

  4. ध्यान दें कि यदि कोई यूनिवर्सल लिंक आपके ऐप को खोलने में सफल होता है और फिर आप सफारी के माध्यम से क्लिक करते हैं (ऐप में नेवी बार के ऊपरी दाएं कोने में अपनी साइट को टैप करके), तो iOS उस URL पर जाने पर ऐप को खोलना बंद कर देता है । फिर सफारी में, आप "ओपन" पृष्ठ के शीर्ष पर एक बैनर प्रकट करने के लिए नीचे खींच सकते हैं। मैंने इस पर बहुत समय बर्बाद किया। ध्यान दें कि ऐप्पल-ऐप-साइट-एसोसियेशन फ़ाइल में आपके द्वारा बताए गए रास्तों के आधार पर, साइट पर क्लिक करके => उल को अक्षम करना पथ विशेष लगता है । इसलिए यदि आपके पास अलग-अलग मार्ग हैं, yoursite.com/a/*और yoursite.com/b/*, यदि आप क्लिक करते हैं yoursite.com/a/*और यह आपके ऐप को सीधे खोलता है, तो आपके पास ऐप के शीर्ष दाएं कोने में से होकर जाने के लिए विकल्प है yoursite.com/a/*। यदि आप ऐसा करते हैं, तो बाद का दौराyoursite.com/a/*ब्राउज़र में खुलेगा, ऐप नहीं। हालांकि, yoursite.com/b/*अप्रभावित रहना चाहिए और फिर भी सीधे अपना ऐप खोलें।

मुझे बताएं कि क्या आपको पता है कि मुद्दा क्या है। मैं व्यक्तिगत रूप से बहुत उत्सुक हूं कि यूनिवर्सल लिंक कैसे काम करते हैं और किन किन मामलों में मौजूद हैं। सौभाग्य।


1
वही चीज। बहुत अजीब। कभी-कभी यह सीधे ऐप को खोलता है, कभी-कभी यह वेबव्यू खोलता है। काश, उन्होंने दस्तावेज को स्पष्ट कर दिया होता। इस सुविधा का संचालन अनियमित है
लेगोलस

4
1) के संबंध में, यह आवश्यक नहीं है कि आप अपनी ऐप्पल-ऐप-साइट-एसोसिएशन फ़ाइल पर हस्ताक्षर करें यदि आप इसे https पर सेवा कर रहे हैं।
जेरेमी हिक्स

11
अपने iOS डिवाइस को पुनरारंभ करने से भी मदद मिल सकती है। मैंने सभी सेटिंग्स और कॉन्फ़िगरेशन की जाँच की और मुझे पूरा यकीन था कि सब कुछ सही है लेकिन यह अभी भी काम नहीं करेगा। फिर मैंने दूसरे उपकरण के साथ कोशिश की और यह पूरी तरह से काम कर गया। मैंने फिर मूल डिवाइस से ऐप को हटा दिया, डिवाइस को फिर से शुरू किया और ऐप को फिर से इंस्टॉल किया, फिर बस काम किया ...
mathz

4
सफारी के बजाय ऐप में वापस कैसे जाएं यदि कोई गलती से ऐप के दाहिने कोने पर वेबसाइट लिंक दबा देता है?
इविनर

3
मुझे कहीं भी App बैनर में Open नहीं मिला। लंबी खोज के बाद, यहां एक समाधान है: अपनी साइट के लिए नोट्स ऐप में कोई भी लिंक टाइप करें (जो एक सार्वभौमिक लिंक है)। अब क्लिक करें हो गया। एक बार जब यह एक लिंक बन जाता है, तो उस पर क्लिक करें और "AppNAME-HERE में खोलें" चुनें!
किशोरी k४47

64

ऐसे कई तरीके हैं जो गलत हो सकते हैं। दो बिंदुओं ने मुझे परेशान किया:

  • Xcode में, जब आप एसोसिएटेड डोमेन एंटाइटेलमेंट जोड़ते हैं, तो प्रत्येक प्रविष्टि को applinks:आपके डोमेन नाम के साथ शुरू करना होगा । जैसे applinks:www.apple.com

  • हालाँकि Xcode ने मेरे लिए एक एंटाइटेलमेंट फ़ाइल बनाई, लेकिन इसमें मेरा बिल्ड शामिल नहीं था: मुझे उस बॉक्स को मैन्युअल रूप से क्लिक करना था।

और हां, ऐसा करने के बाद, apple-app-site-associationफ़ाइल पर हस्ताक्षर करना आवश्यक नहीं था : यह सिर्फ सादा पाठ है, और यह तब तक काम करता है, जब तक कि यह HTTPS पर काम नहीं करता है। (यदि आप iOS 8 का समर्थन कर रहे हैं, तब भी आपको इस पर हस्ताक्षर करने की आवश्यकता होगी।)


4
मुझे ऐप को पूरी तरह से टेस्ट डिवाइस से डिलीट करना था और फिर काम करने से पहले फिर से बनाना और चलाना था।
फिल एंड्रयूज

14
आप मेरा दिन बचाते हैं, यह मेरा मुद्दा था, हालांकि XCode ने मेरे लिए एक एंटाइटेलमेंट फ़ाइल बनाई, इसमें मेरे बिल्ड में शामिल नहीं था: मुझे उस बॉक्स को मैन्युअल रूप से क्लिक करना था।
चाम

12
बिल्ड में एंटाइटेलमेंट फ़ाइल को शामिल करना मेरे लिए भी समस्या तय करता है। यह ध्यान देने योग्य है कि Xcode 8 में फ़ाइल निरीक्षक में लक्ष्य सदस्यता चेकबॉक्स वास्तव में अक्षम हैं। मुझे बिल्ड सेटिंग्स में जाना था और प्रतिलिपि संसाधन चरण में एंटाइटेलमेंट फ़ाइल को जोड़ना था।
चार्ल्स ए।

5
@cham: क्या आप लोग इस बारे में विस्तार से बता सकते हैं कि "हालांकि XCode ने मेरे लिए एंटाइटेलमेंट फ़ाइल बनाई है, लेकिन यह मेरे बिल्ड में शामिल नहीं है: मुझे उस बॉक्स को मैन्युअल रूप से क्लिक करना था।"
थांग फाम

6
@AisisFayyaz बिल्ड चरणों> कॉपी बंडल संसाधन पर जाएं। प्लस साइन पर क्लिक करें फिर अपनी एंटाइटेलमेंट फ़ाइल जोड़ें।
s.zainulabideen

36

यूनिवर्सल लिंक्स के लिए एसोसिएशन फ़ाइल बनाने के लिए प्रलेखन में स्पष्ट रूप से एक त्रुटि है ।

यह कहां कहा गया है:

ऐपआईडी कुंजी का मूल्य ऐप की टीम आईडी और बंडल आईडी है

यह कहना चाहिए

ऐपआईडी कुंजी का मूल्य ऐप का प्रीफिक्स और बंडल आईडी है

अधिकांश ऐप के लिए, ऐसा लगता है कि टीम आईडी और ऐप उपसर्ग समान हैं, लेकिन अगर आपका ऐप कई सालों से स्टोर में है, तो ये मान अलग-अलग हो सकते हैं।

इस मान को खोजने के लिए, सदस्य केंद्र https://developer.apple.com पर खोलें और "प्रमाणपत्र, पहचानकर्ता और प्रोफाइल" देखें, "पहचानकर्ता" पर क्लिक करें, फिर "पहचानकर्ता" के तहत तालिका में "ऐप आईडी" पर क्लिक करें। अपना ऐप ढूंढें, और एसोसिएशन फ़ाइल के लिए अपना ऐपआईडी बनाने के लिए वहां उपसर्ग मान और बंडल आईडी का उपयोग करें।


2
+1, इससे मुझे बहुत मदद मिली। आधे दिन बिताओ क्यों यह काम नहीं किया और यह मेरे लिए मामला लग रहा था
Ivo बेकर्स

आपने मेरा दिन बचाया, विलेख में मेरा ऐप बहुत समय पहले था और ऐप उपसर्ग टीम आईडी से अलग है।
Ti3t

यह केवल एक चीज है जो मेरे लिए काम करती है। धन्यवाद!
dhin

मेरे लिए यही समाधान था। अच्छी सलाह।
विन्सेन्ट

33

इस समस्या को डीबग करने में मदद करने के लिए, अपने एप्लिकेशन को इंस्टॉल करते समय अपने डिवाइस के कंसोल आउटपुट में "swcd" खोजें, यह देखने के लिए कि आपका यूनिवर्सल लिंक काम कर रहा है या असफल।

  1. एक वास्तविक उपकरण का उपयोग करें, न कि सिम्युलेटर।
  2. आप डिवाइस से ऐप हटाएं।
  3. डिवाइस को अपने कंप्यूटर से कनेक्ट करें, और डिवाइस के कंसोल आउटपुट को xcode में देखें। (विंडो -> डिवाइस -> [आपका डिवाइस] -> ओपन कंसोल)। इस खिड़की को खुला रखें।
  4. अपना ऐप इंस्टॉल करें और इसे लॉन्च होने दें।
  5. कंसोल आउटपुट को "swcd" पर फ़िल्टर करें। यदि यह पर्याप्त है तो आपको फोलोइंग स्क्रीनशॉट जैसा कुछ दिखाई देगा। यदि यह विफल रहता है तो आपको कुछ और दिखाई देगा। यदि आपको कुछ दिखाई नहीं देता है, तो आपने कुछ मूलभूत को गड़बड़ कर दिया है जैसे कि एसोसिएटेड डोमेन एंटाइटेलमेंट जोड़ना।

Applink सफलतापूर्वक जोड़ा गया


2
बहुत बढ़िया टिप! मैं applinks के लिए https: // जोड़ रहा था: पात्रता और उस पूर्ण पथ को निर्दिष्ट करना जो मैं सुनना चाहता था जिसमें दोनों गलतियाँ थीं। मैं example.com/path * निर्दिष्ट कर रहा था, जहाँ मुझे केवल मेरे डोमेन.कॉम और AASA फ़ाइल को example.com पर निर्दिष्ट करना चाहिए था, फिर मेरे ऐप के बंडल आईडी के खिलाफ पथ निर्दिष्ट करता है
नुमान तारिक

3
क्या मैं आपको नकद बोनस तार कर सकता हूँ ?? मैंने 2 दिन बिताए इस भयानक सार्वभौमिक लिंक सेटअप के हर चरण से गुजरने के बाद भी कुछ भी मदद नहीं कर रहा था जब तक कि मैंने आपके दृष्टिकोण की कोशिश नहीं की। मुझे अपने डोमेन के लिए फायरबेस के रूट फ़ोल्डर में अपनी एसोसिएशन फ़ाइल होस्ट करने के लिए वास्तव में दुर्भाग्यपूर्ण लगा, और यह पता चला कि ऐप्पल क्वेरीज़। सबसे पहले ज्ञात / उपनिर्देशिका, और फायरबेस अपने स्वयं के (!) सही एसोसिएशन के साथ इसका जवाब देते हैं। कोई एप्लिकेशन लिंक नहीं है। Goshhh मैं यह कैसे पता लगाने वाला हूँ, Apple?
nalexn

अह्ह्ह महान संकेत! मैं इस डिवाइस कंसोल के बारे में नहीं जानता था, बस Xcode कंसोल आउटपुट को देख रहा था। मेरी परेशानी यह थी कि 3 में से 2 डीप्लिंक डोमेन डीआईडी ​​काम करते हैं, लेकिन यह आखिरी नहीं है। और वहाँ कंसोल में मैंने देखा कि मेरे अंतिम डोमेन के लिए मैंने इसे "appllinks: <domain>" (2 L's) के साथ गलत वर्तनी दी थी ... वैसे भी, यूनिवर्सल चेक वास्तव में पंजीकृत हैं, तो फिर से जाँच के एक शानदार तरीके के लिए धन्यवाद! (मैंने पाया कि कंसोल लॉग्स ऐप को अनइंस्टॉल करने पर लिंक को हटाना: +1)
Arno Teigseth

1
यह डिफ़ॉल्ट रूप से उस क्रिया को माना जाता है? क्योंकि मुझे ऐसा विस्तृत लॉग नहीं मिलता है .. इसका मतलब यह है कि ऑपरेशन सफल नहीं है?
निकोलस एलियो

26

सेंटेरिक का जवाब जानकारीपूर्ण है।

लेकिन सफारी के बजाय ऐप में फिर से खोलने के लिए सार्वभौमिक लिंक को सक्षम करने के लिए हमें निम्नलिखित कार्य करने की आवश्यकता है।

  • मेल या iMessage में यूनिवर्सल लिंक पर लंबे समय तक प्रेस करें, फिर आपको विकल्प दिखाई देंगे कि सफारी में खोलें या ऐप में।

2
कोई विकल्प नहीं है app, केवल कॉपी, ओपन, रीडिंग लिस्ट में जोड़ें
iEngineer

1
लगभग इस समस्या को दूर करने के लिए पागल हो गया, लेकिन यह समाधान या मैं था। हो सकता है कि अगर इसे सही तरीके से सेट नहीं किया गया है और मेल ऐप सफारी में लिंक खोलता है तो यह हमेशा सफारी में खुलता है? कोई विचार नहीं है, लेकिन मैंने एक बार लंबे प्रेस किया था -> 'myapp' में खुला ... और अब लिंक सही ढंग से खुला!
हर्बर्ट

1
इस समाधान के लिए बहुत बहुत धन्यवाद। मैं लगभग एक दिन तक इसमें फंसा रहा। आपने मेरा दिन बचाया।
एंड्रयू


18

मैंने महसूस किया कि मेरे लिए समस्या यह थी कि रूट डायरेक्टरी (जैसे। http://example.com/) से लिंक ने मेरा ऐप नहीं खोला था, लेकिन अगर मैंने कोई रास्ता जोड़ा (उदाहरण के लिए http://example.com/mypath) तो यह काम कर गया। जोड़ा जा रहा है "/"पथ सूची में sovled:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "*", "/" ]
            }
        ]
    }
}

में slutsker द्वारा उत्तर के रूप में इस Apple डेवलपर मंच धागा।


17

यह जांचने के लिए त्वरित चरण कि आपने यूनिवर्सल लिंक को सही तरीके से लागू किया है या नहीं।

  • उस लिंक पर टैप करें और होल्ड करें जिसे आप ऐप लॉन्च करने की उम्मीद करते हैं। आपको प्रसंग मेनू में "[अपने ऐप का नाम] में खोलें" देखना चाहिए।

  • नोट्स खोलें ऐप, वह लिंक टाइप करें जिसकी आपको ऐप खोलने की उम्मीद है। पूरा किया। लिंक पीला हो जाएगा और लिंक पर टैप करने से आपके ऐप को खोलना चाहिए, न कि सफारी को।

  • यदि लिंक http://yourDomain.com ऐप लॉन्च नहीं कर रहा है, तो http://yourDomain.com/yourFolder/ आज़माएं

  • सफारी में, यदि संदर्भ मेनू सफारी में "[अपने ऐप नाम में खोलें]" को दिखाता है, लेकिन लिंक को टैप करने से ऐप लॉन्च करने के बजाय सफारी में ही लिंक खुल जाता है,

    ए। सफारी पेज पर नीचे खींचने की कोशिश करें जो लिंक पर क्लिक किया गया था जिस तरह से आपने 'रिफ्रेश करने के लिए पुल' किया था। एक बैनर दिखाई देना चाहिए जो आपके ऐप को खोल सकता है। ऐप खोलने के लिए बैनर पर टैप करें, होम बटन दबाकर ऐप को बंद करें, सफारी पर वापस जाएं और लिंक को फिर से टैप करके ऐप लॉन्च करने का प्रयास करें। इस बार, ऐप को लॉन्च किया जाना चाहिए क्योंकि बैनर को टैप करने से ऐप में लिंक को खोलने के लिए प्राथमिकता बचाई जानी चाहिए।

    ख। अगर ऐप अभी भी चरण ए के बाद लॉन्च नहीं होता है, तो जीमेल जैसे वेबमेल के लिंक को मेल करने की कोशिश करें और सफारी में वेबमेल साइट खोलें और लिंक पर क्लिक करने का प्रयास करें। यदि यह काम करता है, तो आप लिंक के रूप में उसी डोमेन से ऐप लॉन्च करने की कोशिश कर रहे होंगे। मैंने जो देखा है, उसी डोमेन से ऐप लॉन्च करना ज्यादातर विफल रहता है । संभवत: सफ़ारी अभ्यस्त यह जांचने के लिए कि गंतव्य यूआरएल एक सार्वभौमिक लिंक है, जब लिंक उसी डोमेन में है जो उपयोगकर्ता चालू है। इसलिए ऐप को दूसरे डोमेन से लॉन्च करने की कोशिश करें।


3
यही कारण है कि, इस मुद्दे के साथ घंटों से काम कर रहा है, उसी डोमेन से एपीपी को इकट्ठा कर रहा है। धन्यवाद :)
maledr53

12

यह सार्वभौमिक लिंक को एकीकृत करने के बाद प्रोजेक्ट संस्करण को बढ़ाने या संख्या बनाने के लिए भी महत्वपूर्ण है। यहां तक ​​कि अगर आप हटाते हैं / फिर से इंस्टॉल करते हैं, तब तक iOS लिंक को पिक नहीं करेगा जब तक कि आप संस्करण को टक्कर नहीं देते।


1
यह! बंडल संस्करण पूरी तरह से था जो मेरे परीक्षण को विफल करने का कारण बन रहा था, क्योंकि मैं उपरोक्त सभी सलाह से apple-app-site-associationगुजरूंगा और मेरे लिंक अभी भी सफारी लॉन्च करेंगे क्योंकि iOS पिछले संस्करण से कैश किए गए परिणाम का उपयोग कर रहा है जिसमें गलत appId उपसर्ग था
zai chang

काइल, मुझे लगता है कि मैं तुमसे प्यार करता हूँ! यह उत्तर दिन बचाओ, धन्यवाद!
नीकर

यह मेरे लिए गुप्त सॉस था! धन्यवाद धन्यवाद धन्यवाद!
नर्सरी

10
  • यदि आप ब्राउज़र URL फ़ील्ड में लिंक पेस्ट करते हैं तो यूनिवर्सल लिंक काम नहीं करेगा।

  • यूनिवर्सल लिंक एक उपयोगकर्ता संचालित तत्व के साथ काम करते<a href="..."> हैं जो डोमेन पर क्लिक करते हैं । उदाहरण: अगर google.com पर एक यूनिवर्सल लिंक है जो bnc.lt की ओर इशारा करता है, तो यह ऐप खोलेगा।

  • यूनिवर्सल लिंक एक उपयोगकर्ता द्वारा संचालित तत्व के साथ काम नहीं करेगा उसी डोमेन पर<a href="..."> क्लिक करें । उदाहरण: अगर google.com पर एक यूनिवर्सल लिंक है, जो google.com पर एक अलग यूनिवर्सल लिंक की ओर इशारा करता है, तो यह ऐप नहीं खोलेगा।

  • <a>जब तक यह एक उपयोगकर्ता कार्रवाई का हिस्सा नहीं है, यूनिवर्सल लिंक्स को जावास्क्रिप्ट (window.onload या एक .click) में कॉल के माध्यम से ट्रिगर नहीं किया जा सकता है।

स्रोत: https://dev.branch.io/getting-started/universal-app-links/support/ios/#appsbrowsers-that-support-universal-links

तीसरी गोली मुझे एक दिन के बारे में पता लगाने के लिए लागत।


1
तीसरी गोली, यहाँ भी: कई घंटों का समय बर्बाद होता है। Apple के पास इसके लिए एक बहुत अच्छी मूर्खतापूर्ण व्याख्या है: "iOS उपयोगकर्ता के सबसे अधिक संभावित इरादे का सम्मान करता है और सफारी में लिंक खोलता है" अपने आप को यहां देखें ।
जोक्स

तीसरा बुलेट टॉप!
बेटरोस

10

जिन लोगों को आसानी से उद्घाटन (यूनिवर्सल) लिंक का परीक्षण करने की आवश्यकता है, आप इस कमांड के साथ टर्मिनल से अपने सिम्युलेटर में लिंक भी खोल सकते हैं:

xcrun simctl openurl booted yourapp_or_http://yourlink

उदाहरण के लिए:

xcrun simctl openurl booted https://www.google.com


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

7

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

इसकी जांच - पड़ताल करें:

यूनिवर्सल लिंक डिबगिंग गाइड

डिबगिंग गाइड पूर्वावलोकन

यदि आप केवल यूनिवर्सल लिंक को नए सिरे से सेट करना चाह रहे हैं, तो यह गाइड वास्तव में मददगार है:

iOS डीप लिंकिंग सेटअप गाइड

आशा है कि वे सहायक हो!


बहुत मददगार, धन्यवाद! वास्तविक डिवाइस पर चलने पर मेरे लिए काम किया, लेकिन आईओएस सिम्युलेटर नहीं।
जोश स्कैलर

6

बस मैंने सोचा था कि मैं कुछ चीजें जोड़ूंगा, जो कि अधिक लोगों को भविष्य में मेरे साथ समान मुद्दों का सामना करने के मामले में पता चलेगी। ये ज्यादातर प्रमाणीकरण त्रुटियों से संबंधित हैं।

हालांकि सेब स्पष्ट रूप से यह नहीं बताता है, apple-app-site-association रूप से निर्दिष्ट नहीं करता है, पर हस्ताक्षर किए जाने पर भी फ़ाइल को https पर परोसा जाना चाहिए। Https के लिए उपयोग किए जाने वाले प्रमाण पत्र पर भी सेब द्वारा भरोसा किया जाना चाहिए। इसलिए जब सेटिंग में डिवाइस में एक प्रमाणपत्र जोड़ा जाता है -> सामान्य -> ​​प्रोफाइल सफारी में https की अनुमति देगा, तो यह सार्वभौमिक लिंक को काम करने की अनुमति नहीं देगा।

डिवाइस लॉग में, डिवाइस और सर्वर के बीच एक प्रमाणीकरण त्रुटि पर, एक प्रिंट मूल्य होगा "TrustResultValue" : 4। एक TrustResultValue5 साधन प्रमाण पत्र की गलत डोमेन के लिए है (उदाहरण के लिए। Test.com www.test.com से परोसा जाता है)। एTrustResultValue 4 साधन प्रमाण पत्र के इस प्रयोग के लिए विश्वसनीय नहीं है।

यहां डिबगिंग के लिए कुछ उपयोगी कदम हो सकते हैं । "ऐप्पल-ऐप-साइट-एसोसिएशन के लिए परीक्षण का उपयोग" अनुभाग एक कदम से कदम गाइड है कि यह सुनिश्चित करने के लिए कि डिवाइस को apple-app-site-associationफ़ाइल मिल रही है । चरण नीचे की ओर उबलते हैं:

  1. ऐप को अनइंस्टॉल करें। यह आवश्यक है क्योंकि फ़ाइल इंस्टॉल पर डाउनलोड की गई है।

  2. सर्वर को ठीक से सेवा करने से रोकें apple-app-site-association

  3. Xcode में, Window -> Devices को ओपन करें और फिर अपने डिवाइस को चुनें।

  4. विंडो के नीचे त्रिकोण पर क्लिक करके डिवाइस लॉग खोलें।

  5. किसी भी पिछले लॉग को साफ़ करने के लिए ट्रैशकेन पर क्लिक करके लॉग को साफ़ करें जो संबंधित हो सकता है।

  6. प्ले बटन पर क्लिक करके Xcode वाले ऐप को फिर से इंस्टॉल करें।

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

यदि apple-app-site-associationफ़ाइल ठीक से सेवा की जाती है (चरण 2 छोड़ दिया गया है) तो कोई त्रुटि नहीं होनी चाहिए। यदि कोई समस्या है, तो इसके बजाय एक प्रमाणीकरण त्रुटि प्रदर्शित की जा सकती है।


1
मैं चार्ल्स प्रॉक्सी का उपयोग कर एसएसएल स्पूफिंग कर रहा था और इसके परिणामस्वरूप 4. का एक विश्वास मूल्य था। जब मैंने प्रॉक्सी को बंद कर दिया, तो यह सफल रहा।
बेन फ्लिनन

6

सबसे आम कारण है जब उपयोगकर्ता शीर्ष दाईं ओर टैप करता है, इस प्रकार भविष्य में iOS को एप्लिकेशन (इस मामले में उबर) नहीं खोलने के लिए कहता है।

ठीक करने के लिए, स्मार्ट बैनर प्रकट करने के लिए नीचे खींचें और OPEN पर टैप करें:

सफारी में नीचे खींचें, और फिर से खोलें

यह बाद में एप्लिकेशन को खोलने के लिए "याद" होगा।


5

हमने इस स्थान पर ऐप्पल-ऐप-साइट-एसोसिएशन फ़ाइल जोड़ी है :

https://example.com/apple-app-site-association

IOS 9 पर यह ठीक काम किया, लेकिन iOS 10 पर यह काम नहीं किया।

ऐसा प्रतीत होता है कि समस्या। विख्यात पथ के साथ थी :

https://example.com/.well-known/apple-app-site-association

वजह से https://example.com/.well-known/apple-app-site-association पथ पर पुनः निर्देशित https://example.com

<Notice>: Allowing redirect 'https://example.com/.well-known/apple-app-site-association' -> 'https://example.com/'
<Notice>: ### Rejecting AASA file size 154466 for URL https://example.com/.well-known/apple-app-site-association

मेरी राय में अगर किसी तरह से .well- ज्ञात मार्ग सही ढंग से काम नहीं करता है तो यह सार्वभौमिक लिंक को तोड़ देता है।


मैनुअल स्पष्ट रूप से कहता है कि "फ़ाइल को HTTPS के माध्यम से सुलभ होना चाहिए-बिना किसी पुनर्निर्देशन के"।
eonil

मैनुअल यह भी स्पष्ट रूप से कहता है कि "आईओएस 9.3.1 और बाद में चलने वाले ऐप्स के लिए, ऐप्पल-ऐप-साइट-एसोसिएशन फ़ाइल का असम्पीडित आकार 128 केबी से अधिक नहीं होना चाहिए, चाहे फ़ाइल पर हस्ताक्षर किए गए हों।" यह फाइल 154 KB की है।
रॉबर्टो

IOS11 पर आपके सर्वर को स्पष्ट रूप से 404 स्टेटस के लिए लौटना चाहिए: example.com/.well-ogn/apple-app-site-association उसके बाद swcd रूट में फ़ॉलबैक का उपयोग करता है: example.com/apple-app-site-association । आप पोस्टमैन
मैक्स ओडनोवोलिक्क

4

मैं इसे बनाने में कामयाब रहा, लेकिन इसमें काफी समय और संघर्ष लगा। ध्यान दें कि जब तक आप apple-app-site-association फ़ाइल पर हस्ताक्षर नहीं करते हैं (हस्ताक्षर करना वैकल्पिक है!) सफारी में एक लिंक पर टैप करने से आपका ऐप नहीं खुलेगा (इससे मुझे बहुत सिरदर्द होगा)।


1
वह उत्सुक है। Apple डॉक्स में बताता है कि प्योर यूनिवर्सल लिंक्स और iOS9 में उपयोग के लिए आपको हस्ताक्षर करने की आवश्यकता नहीं है। यदि आप iOS 8 हैंडऑफ / साझा वेब क्रेडेंशियल्स का समर्थन करना चाहते हैं तो केवल आपको साइन इन करना चाहिए। दिलचस्प! मेरे पास एक ही समस्या है, इसलिए मैं हस्ताक्षर करने का प्रयास करने जा रहा हूं।

हस्ताक्षर करना वास्तव में वैकल्पिक है। देशी आईओएस ऐप खोलने के लिए ट्रिगर करने के लिए मोबाइल सफारी में एक लिंक को टैप करना "वेब ब्राउज़र-एन-नेटिव ऐप हैंडऑफ़" कहलाता है, इस स्थिति में, आपको json फ़ाइल में activitycontinuationसंपत्ति जोड़ने की आवश्यकता होगी apple-app-site-associationडेवलपर
.apple.com

3

यह जानने के लिए मुझे एक दिन के करीब ले गया। समस्या मैं XCode में अद्यतन प्रोविज़निंग प्रोफाइल डाउनलोड नहीं कर रहा था (मैंने इसके बाद XCode को पुनः आरंभ किया)।

(प्राथमिकताएं> खाते> विवरण देखें> सभी डाउनलोड करें)


3

आप सिम्युलेटर में सार्वभौमिक लिंक का परीक्षण कर सकते हैं

से समर्थन यूनिवर्सल लिंक: एप्स खोज प्रोग्रामिंग गाइड


6
क्या किसी सिम्युलेटर में काम करने के लिए सार्वभौमिक लिंक प्राप्त हुए हैं? मैंने अनगिनत बार कोशिश की है और यह कभी काम नहीं करता है। यह हालांकि एक ही प्रवाह के साथ एक वास्तविक डिवाइस का उपयोग कर काम करता है।
टोनी

मैं यह परीक्षण करने में सक्षम नहीं है। सिम्युलेटर में सार्वभौमिक लिंक को ट्रिगर करने के लिए सफारी को प्राप्त करने की कोशिश करना निरर्थक है, इस तथ्य के बावजूद कि यह एक भौतिक डिवाइस पर ठीक से काम करता है।
अल्बर्ट बोरी

मैं उन्हें सिम्युलेटर में काम करने के लिए नहीं मिला है। @AlbertBori क्या आपको यह काम मिला?
चिब

मुझे लगभग तय है कि वे सिम्युलेटर में काम नहीं करते हैं । मैं अन्य सभी नुकसानों से परिचित हूँ, और मैं उन्हें सिम्युलेटर में काम करने के लिए कभी नहीं मिल सकता ..
Fattie

3

दो दिनों के बाद यह मेरे लिए निकला, कि इस तरह के लिंक (शाखा से)

applinks: xxxx.app.link

एप्लिकेशन को संग्रहीत करने (एड-हॉक) के बाद ही काम करें और इसे फोन पर इंस्टॉल करें।


3

यदि आप फायरबेसapple-app-site-association पर अपनी मेजबानी कर रहे हैं , तो इसे उपनिर्देशिका में डालना सुनिश्चित करें ! ऐसा प्रतीत होता है कि Xcode उस URL को पहले प्रश्न करता है, और यदि यह सफल होता है, तो यह क्वेरी के लिए कोई प्रयास नहीं करता है/.well-known/apple-app-site-association रूट निर्देशिका में । किसी कारण से, फायरबेस इंजीनियरों ने /.well-known/apple-app-site-associationएक खाली (लेकिन सही ढंग से गठित) एसोसिएशन फ़ाइल के साथ स्वचालित रूप से प्रतिक्रिया करने के लिए होस्ट की गई वेबसाइटों को बनाया, जो आपके कस्टम को ओवरराइड करती है, आपको कोई सुराग नहीं छोड़ती कि कुछ भी क्यों नहीं होता है!


2
आखिरकार! बहुत बहुत धन्यवाद। क्या यह कहीं लिखा है? फायरबेस को कहीं पर दस्तावेज होना चाहिए।
बर्काय तुरान्कि

2

Developer.apple.com पर जाएं और अपनी वितरण प्रोफ़ाइल को संपादित करें। संपादन पृष्ठ में आप ऐप आईडी के लिए एक पॉप अप खोल सकते हैं जो आपके ऐप के नामों की एक सूची दिखाएगा और () ऐप के नाम के पीछे के गोल कोष्ठक में यह आपके सभी वास्तविक ऐप आईडी का खुलासा करेगा । कुछ ऐप में आपकी टीम आईडी उपसर्ग के रूप में हो सकती है लेकिन कुछ नहीं । उस पॉप अप मेनू के अंदर () में जो कुछ आप देख रहे हैं, उसका ठीक उपयोग करना सुनिश्चित करें और इसे ऐप्पल-ऐप-साइट-एसोसिएशन विवरण ऐप्पल फ़ील्ड में डालें। मेरे पास वास्तव में एक ऐप और इसके सार्वभौमिक लिंक के साथ यह मुद्दा था।


2

मेरे लिए मुद्दा apple-app-site-associationफ़ाइल का निकला । ऐप्पल के प्रलेखन के अनुसार, केवल ऐपलिंक पैरामीटर की आवश्यकता है। मैंने activitycontinuationपैरामीटर जोड़ा और यह काम किया।

{
  "activitycontinuation": {
    "apps": [
      "9JA89QQLNQ.com.apple.wwdc"
    ]
  },
  "applinks": {
    "apps": [],
    "details": [{
        "appID": "9JA89QQLNQ.com.apple.wwdc",
        "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ]
      }]
  }
}

3 साल बाद और हमने इस सटीक मुद्दे को मारा। जोडना activitycontinuationहमारे लिए तय है।
रेडीर्नोट

2

वास्तव में ठीक उसी मुद्दे / समाधान कॉम्बो को नहीं देखा है जो इसे मेरे लिए काम कर रहा है और साथ ही मेरा खदान जोड़ सकता है किसी को भी यही समस्या है!

अपने ऐप के लिए मैं एक कस्टम URL स्कीम (सेट इन) का उपयोग कर रहा हूं APP_TARGET > Info > URL Types ) और यहां से URL स्कीम को फायरबेस कंसोल में मैच के लिए लेकिन काम नहीं कर रहा था।

मेरी समस्या वास्तव में दो समस्याएं थीं:

अगर स्वचालित रूप से प्रबंधित साइनिंग की जाँच कर रहा है, तो देखें

यदि आप Xcode की "स्वचालित रूप से हस्ताक्षर करने का प्रबंधन" की तरह जाँच कर रहे हैं, जैसे मैं कर रहा था, क्योंकि मैं सिर्फ एक त्वरित डेमो ऐप बनाने की कोशिश कर रहा था, तो आप यह सुनिश्चित करना चाहेंगे कि जिस टीमआईडी का उपयोग किया जाता है वह आपके फायरबेस कंसोल में मेल खाता हो। मैं मूल रूप से अपने Apple डेवलपर खाते में गया और अपने सदस्यता पृष्ठ से टीम आईडी की प्रतिलिपि बनाई, लेकिन बाद में देखा कि Xcode द्वारा उपयोग की जा रही वास्तविक आईडी अलग थी। (आप APP_TARGET > General > Signing > Signing Certificate.इसे मेरे लिए इस तरह लग रहे थे iPhone Developer: My Name (TEAM_ID)) में पा सकते हैं ।

अपने URL प्रकार में अपने टीम पहचान को अपने बंडल पहचानकर्ता के साथ उपसर्ग करें

जब मैंने अपने Firebase कंसोल और Xcode में इन मिलानों को सुनिश्चित किया, तो मेरी अगली समस्या मेरी URL योजना के पहचानकर्ता की थी। यहां अपने बंडल पहचानकर्ता का उपयोग करना विशिष्ट है, लेकिन Firebase वास्तव में आपके द्वारा आपके Firebase कंसोल में दी गई टीम आईडी के साथ उपसर्ग करता है, इसलिए मुझे इसे Xcode में URL प्रकार अनुभाग में पहचानकर्ता के लिए भी उपसर्ग करना था।

इन दो सुधारों और GoogleService-Info.plistफ़ाइल को फिर से डाउनलोड करने के बाद मुझे कोई समस्या नहीं थी, मेरे डायनेमिक लिंक को खोलें।


2

कुल हताशा के दो दिनों के बाद, मुझे लगता है कि मैंने आखिरकार इसे ठीक कर लिया है। यहाँ मेरा समाधान है:

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

{
    "activitycontinuation": {
        "apps": [
            "YOUR_APP_PREFIX.de.company.app"
        ]
   },
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "YOUR_APP_PREFIX.de.company.app",
        "paths": ["/*"]
      }
    ]
  }
} 

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


1

मेरे लिए, मेरी त्रुटि थी कि हमारी साइट www.domain.com को domain.com पर पुनर्निर्देशित कर रही है, इसलिए उसके कारण सभी www.domain.com/* विफल हो जाएंगे। उम्मीद है की वो मदद करदे।


1

मैं कैलेंडर ऐप का उपयोग करके iOS सिम्युलेटर में यूनिवर्सल लिंक का परीक्षण करने में सक्षम था।

मैंने बस एक ईवेंट बनाया और उस URL को जोड़ा जो मैं इवेंट के URLक्षेत्र में परीक्षण करना चाहता था । फिर, बनाई गई घटना को देखते समय, आप बस URL लिंक पर टैप कर सकते हैं और आपका ऐप खुल जाना चाहिए।


यह मेरे लिए काम करने के लिए प्रतीत नहीं होता है, मैंने सिम्युलेटर में काम करने के लिए उन्हें कोई फायदा नहीं होने के लिए सब कुछ करने की कोशिश की है। वे वास्तविक डिवाइस पर ठीक काम करते हैं, लेकिन यह विकास / डिबग के लिए आदर्श नहीं है। मैंने लंबे समय तक लिंक को दबाने की कोशिश की है और "ओपन इन ऐप" विकल्प नहीं है।
चिब

1

एक दिन बिताने के बाद यह काम करने की कोशिश कर रहा था, मेरे फोन को फिर से शुरू करने से समस्या हल हो गई।

एप्लिकेशन को अनइंस्टॉल / रीइंस्टॉल करना या तो काम नहीं किया।


1

Ios13 के लिए, एक नया प्रारूप है - यहां देखें देखें https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app?language=objc

मैंने इस तरह दिखने के लिए अपनी फ़ाइल अपडेट की:

{
  "applinks": {
      "details": [
           {
             "appIDs": [ "ABCDE12345.com.example.app" ],
             "components": [
               {
                  "/": "/my-link/*",
                  "exclude": true,
                  "comment": "Matches any URL whose path starts with /my-link/ and instructs the system not to open it as a universal link"
               }
             ]
           }
       ]
   },
   "webcredentials": {
      "apps": [ "ABCDE12345.com.example.app" ]
   }
}

आप जोड़ने के लिए आवश्यकता होगी "exclude": trueकरने के लिए componentsकरने के लिए वस्तु commentसच हो
skornos

@skornos अच्छा बिंदु। मैं अपने उत्तर में संशोधन करूंगा।
अनिता

0

भविष्य के पाठकों के लिए जो इस पृष्ठ को ढूंढते हैं ...

मेरी भी ऐसी ही स्थिति थी। हालांकि, मेरी स्थिति में, iOS10 AOK काम कर रहा था, और इससे कोई फर्क नहीं पड़ता कि मैंने क्या किया (टक्कर बिल्ड नंबर, डिलीट / रीइंस्टॉल इत्यादि), iOS9 काम करने से इनकार करने लगा।

मैं iOS10 से यह करने के लिए आ रहा था, और iOS9 का समर्थन करने की जरूरत थी। उस समय, यहाँ दस्तावेज़ - https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html - स्पष्ट रूप से बताता है कि फ़ाइल को वेब-सर्वर के मूल में रखा जा सकता है (उदाहरण के लिए /apple-app-site-association) या .well- ज्ञात फ़ोल्डर (जैसे)/.well-known/apple-app-site-association ) में। क्योंकि मैं एंड्रॉइड का भी समर्थन कर रहा हूं, जो एक समान फ़ाइल के लिए .well- ज्ञात फ़ोल्डर का भी उपयोग करता है, मैंने दोनों को वहां डालने का फैसला किया।

IOS10 पर नए इंस्टॉल्स के लिए, यह स्पष्ट रूप से रूट फ़ाइल का अनुरोध करता है, विफल रहता है, फिर .well- ज्ञात फ़ाइल का अनुरोध करता है, और सफल होता है।

IOS9 के लिए, यह स्पष्ट रूप से रूट फ़ाइल का अनुरोध करता है, विफल रहता है, और कुछ नहीं करता है।

समाधान: यदि आप iOS9 का समर्थन करते हैं, तो फ़ाइल को यहां रखें /apple-app-site-association


0

मेरे मामले में पथ में क्वेरी पैरामीटर डालने में मेरी त्रुटि थी:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "/auth-ui/hub?target=confirm&*" ]
            }
        ]
    }
}

जब मैं पथों से 'लक्ष्य? = पुष्टि और *' निकालता हूं, तो यह काम करना शुरू कर देता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.