2015-06-23 17 views
6

मैं एक डीप मैनिफ़ेस्ट फ़ाइल में अपने Android एप्लिकेशन के लिए परिभाषित किया गया है:एंड्रॉयड डीप pathPrefix गुण अनदेखी की गई है

<activity android:name="com.example.DeeplinkActivity" 
     android:screenOrientation="portrait" 
     android:theme="@style/MyBaseTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 

         <!-- Accepts URIs that begin with "example://shelf” --> 
      <!-- Currently handles Ads deeplink structure (iPhone structure) --> 
      <data 
       android:host="shelf" 
       android:pathPrefix="" 
       android:scheme="example" /> 

      <!-- Accepts URIs that begin with "example://com” --> 
      <data 
       android:host="com" 
       android:pathPrefix="" 
       android:scheme="example" /> 

      <!-- Accepts URIs that begin with http://www.example.com/some/sample/page.htm” --> 
      <data 
       android:host="www.example.com" 
       android:pathPrefix="/some/sample/page.htm" 
       android:scheme="http" /> 
     </intent-filter> 
    </activity> 

मैं भी है कि इसी तरह लग रही है लेकिन डीप लिंक के रूप में नहीं माना जाना चाहिए मेरे एप्लिकेशन में कुछ लिंक है। वे http://www.example.com से शुरू करते हैं लेकिन उनके पास एक पूरी तरह से अलग उपसर्ग है। उदाहरण के लिए: http://www.example.com/other/not/deep/link.htm

किसी कारण से DeeplinkActivity के लिए परिभाषित इरादा फ़िल्टर को बाधित किया जा रहा है भले ही इसे उपसर्ग "/some/sample/page.htm" के साथ परिभाषित किया गया हो।

क्या उपसर्ग को अनदेखा किया जा रहा है? यदि डीईप्लिंक इरादे फ़िल्टर को परिभाषित करते समय किसी को पथफ्रिक्स विशेषता का उपयोग क्यों नहीं करना चाहिए?

+0

क्या आप कृपया सुनिश्चित कर सकते हैं कि लिंक का href आपके द्वारा पंजीकृत पथदर्शी को इंगित कर रहा है – Dinash

+0

हां। लिंक (href मान्य है ...) मैं इसे (ऐप के अंदर और बाहर) के साथ-साथ अपने ऐप के अंदर लॉन्च किए गए यूआरएल (किसी भी स्थापित ब्राउज़र के साथ खोला जाने के लिए) की जांच करता था। मुझे लगता है कि प्रकट इरादे फ़िल्टर के साथ ऐसा कुछ होना चाहिए। क्या आपके पास कोई नमूना कोड है जो गतिविधि के इरादे फ़िल्टर के लिए अर्हता प्राप्त करने का निर्णय लेते समय पथफ्रिक्स विशेषता को अनदेखा नहीं करता है? –

+0

मैंने अपने नमूना ऐप में अपना मेनिफेस्ट इरादा फ़िल्टर चेक किया और यह अपेक्षित के रूप में काम किया। तो सोचा कि यह कुछ भी हो सकता है जो href को – Dinash

उत्तर

5

, मैं या तो सभी http डीप लिंक का काम कर रहा है या उनमें से कोई भी साथ समाप्त हो गया उपसर्ग के बावजूद। ऐसा लगता है कि उपसर्ग, मेजबान और योजनाएं सभी एक दूसरे में खून बहती हैं, इसलिए आपके उदाहरण example://www.example.com/ शायद एक गहरी लिंक भी ट्रिगर करेंगे, भले ही व्यक्तिगत डेटा तत्वों में से कोई भी इसे परिभाषित न करे। मैंने यह पता लगाया कि आप उन्हें अलग-अलग इरादों में अलग कर सकते हैं और वे मिश्रण नहीं करेंगे।

तो आपके मामले में आप इस्तेमाल कर सकते हैं:

<intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <category android:name="android.intent.category.DEFAULT" /> 

        <!-- Accepts URIs that begin with "example://shelf” --> 
     <!-- Currently handles Ads deeplink structure (iPhone structure) --> 
     <data 
      android:host="shelf" 
      android:pathPrefix="" 
      android:scheme="example" /> 

     <!-- Accepts URIs that begin with "example://com” --> 
     <data 
      android:host="com" 
      android:pathPrefix="" 
      android:scheme="example" /> 

    </intent-filter> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <category android:name="android.intent.category.DEFAULT" /> 

     <!-- Accepts URIs that begin with http://www.example.com/some/sample/page.htm” --> 
     <data 
      android:host="www.example.com" 
      android:pathPrefix="/some/sample/page.htm" 
      android:scheme="http" /> 

    </intent-filter> 

यह केवल http यूआरआई कि http://www.example.com/some/sample/page.htm या यूआरआई example://com या example://shelf

अपने originial प्रश्न में

तो साथ शुरुआत के साथ शुरू, स्वीकार करेंगे http://www.example.com/other/not/deep/link.htm ट्रिगर नहीं होगा एक गहरा लिंक

+0

आप सही हैं कि वे मिश्रण करते हैं। यह थोड़ी देर पहले था और मैंने इस दृष्टिकोण का उपयोग किया है। मैं उसी डीप्लिंक गतिविधि के लिए 3 अलग-अलग इरादों के फ़िल्टर के साथ समाप्त हुआ। –

+1

मैं दो अलग-अलग इरादों-फ़िल्टर का उपयोग करता हूं। एंड्रॉइड के साथ एक: autoVerify = "true" मार्शमलो में पेश किए गए ऐप लिंक को सक्षम करने के लिए। क्रोम जैसे ब्राउजर से गहरे लिंक को सक्षम करने के लिए एंड्रॉइड के साथ दूसरा: pathPrefix = "/ abc /"। विभिन्न के साथ एक इरादा-फ़िल्टर का उपयोग करना सभी परिदृश्यों को खराब करता है। – Song

2

जाहिर है, एक खाली एंड्रॉइड: किसी अन्य डेटा टैग में पथप्रैक्स विशेषता विशिष्ट डेटा टैग (उपरोक्त प्रश्न में अंतिम डेटा टैग) को अपने पथ को अनदेखा करने के लिए कारण बन जाएगी, हालांकि यह अच्छी तरह परिभाषित है!

तो यह प्रकट घोषणा पिछले डेटा टैग को ठीक करता सामान्य रूप से व्यवहार करने के लिए: pathPrefix निकाला जा रहा है मेरे लिए समस्या का समाधान नहीं

<activity android:name="com.example.DeeplinkActivity" 
    android:screenOrientation="portrait" 
    android:theme="@style/MyBaseTheme.NoActionBar"> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <category android:name="android.intent.category.DEFAULT" /> 

        <!-- Accepts URIs that begin with "example://shelf” --> 
     <!-- Currently handles Ads deeplink structure (iPhone structure) --> 
     <data 
      android:host="shelf" 
      android:scheme="example" /> 

     <!-- Accepts URIs that begin with "example://com” --> 
     <data 
      android:host="com" 
      android:scheme="example" /> 

     <!-- Accepts URIs that begin with http://www.example.com/some/sample/page.htm” --> 
     <data 
      android:host="www.example.com" 
      android:pathPrefix="/some/sample/page.htm" 
      android:scheme="http" /> 
    </intent-filter> 
</activity> 
संबंधित मुद्दे