2017-03-16 5 views
5

में यूआरएल योजना से मेरा ऐप खोलें मुझे पता है कि इस बारे में SO पर कई सवाल हैं, लेकिन उनमें से कोई भी मेरी समस्या को हल करने में मदद नहीं कर रहा है।एंड्रॉइड

मैं ईमेल/टेक्स्ट/ब्राउज़र से एक लिंक पर क्लिक करने और अपना ऐप खोलने में सक्षम होना चाहता हूं।

मैं AndroidManifest.xml कोड है:

<!-- Splash Activity --> 
    <activity 
     android:name=".ui.SplashActivity" 
     android:label="@string/app_name" 
     android:theme="@style/SplashTheme" 
     android:launchMode="singleTask"> 

     <!-- Launcher intent filter --> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

     <!-- Branch URI scheme --> 
     <intent-filter> 
      <data android:scheme="myscheme" android:host="open" /> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
     </intent-filter> 
    </activity> 

यह ठीक प्रलेखन here पालन करने के लिए, तथापि, जब मैं myscheme://open को खोजने में समर्थ क्रोम (या Android ब्राउज़र) का उपयोग प्रतीत होता है, मेरे ऐप नहीं है खुला, और इसके बजाय मुझे myscheme: // open के लिए Google खोज परिणाम मिलते हैं।

क्या कोई भी देख सकता है कि मैं किस पहेली का टुकड़ा खो रहा हूं? मैं अपने ऐप को यूआरआई के माध्यम से कैसे खोल सकता हूं?

छोटे अद्यतन:

this पढ़ने के बाद, मैंने पाया market://details?id=com.myapp लिए क्रोम नेविगेट करता है कि Play स्टोर खोलने नहीं किया है। इसके बजाय यह Google खोज परिणामों को लौटाता है - वैसे ही जब मैं अपना ऐप लॉन्च करने की कोशिश करता हूं। जो भ्रमित है। क्या मुझे गहरी लिंकिंग की अनुमति देने के लिए एक वैश्विक ओएस सेटिंग याद आ रही है?

+0

"जब मैं का उपयोग क्रोम (या Android ब्राउज़र) myscheme को खोजने में समर्थ: // खुला" - कैसे ** बिल्कुल ** आप इस करते हैं? पता बार में टाइप करें? उस यूआरएल के साथ एक वेब पेज में एक लिंक पर क्लिक करें? कुछ और? – CommonsWare

+0

@ कॉमन्सवेयर (1) पता बार में टाइप करके, और (बी) किसी ईमेल में एक लिंक पर क्लिक करना। दोनों एक ही व्यवहार में परिणाम। – Brett

उत्तर

1

किसी भी ऐप के लिए myscheme://open पर कोई ध्यान देने की आवश्यकता नहीं है।

विशेष रूप से:

  • किसी वेब ब्राउज़र जब आप पता पट्टी में myscheme://open टाइप कुछ तृतीय-पक्ष एप्लिकेशन को लॉन्च करने की कोशिश करने के लिए कोई आवश्यकता नहीं है, क्योंकि उन करने के लिए कि असली में संभावना नहीं है विश्व।

  • myscheme://open के लिए ACTION_VIEWIntent बनाने का प्रयास करने के लिए किसी ईमेल प्रोग्राम की आवश्यकता नहीं है।

  • , स्ट्रिंग myscheme://open के लिए आने वाले सभी संदेशों खोज का एहसास है कि यह किसी भी तरह कोई ऐप्लिकेशन लिंक है, और इसके साथ कुछ करने के लिए एक एसएमएस ग्राहक के लिए कोई आवश्यकता नहीं है।

आप कुछ बेहतर किस्मत समग्र (the documentation that you linked to से http://www.example.com/gizmos यूआरएल) एक https (या, एक चुटकी में, http) यूआरएल अपने अनुप्रयोग कड़ी के रूप में उपयोग करते हुए होगा। फिर, एसएमएस क्लाइंट यह पहचान सकते हैं कि यह एक यूआरएल है और इसके साथ कुछ करें। और, कुल मिलाकर, आपको या तो अपने ऐप या अपने वेब पेज पर ले जाना चाहिए, जिनमें से दोनों उपयोगकर्ता के लिए कम से कम कुछ उपयोगी हैं। हालांकि, जब भी उपयोगकर्ता आपके यूआरएल को एड्रेस बार में टाइप करता है तो आपका ऐप तब भी जरूरी नहीं होगा, क्योंकि ब्राउज़र ऐप लिंक को वहां प्रवेश करने की उम्मीद नहीं कर सकता है।

आप https ऐप लिंक की कामकाजी बाधाओं को बढ़ा सकते हैं, और जिस तरीके से आप चाहते हैं, publishing a digital asset links file और अपने मैनिफेस्ट में टाइप करना।

हालांकि, कुल मिलाकर, यह अभी भी इस सामान पर ध्यान देने का विकल्प चुनने वाले ग्राहकों पर निर्भर है। कभी-कभी वे करेंगे, क्योंकि एंड्रॉइड ऐसा करने के लिए अपेक्षाकृत आसान बनाता है। कभी-कभी वे नहीं करेंगे। एक यूआरएल आपका यूआरएल देखने के लिए आपका स्वागत है, देखें कि यह https है, "हे, एक वेब ब्राउज़र के रूप में, मुझे पता है कि इसे कैसे संभालना है!", और अपने इंस्टॉल किए गए ऐप को अनदेखा करते हुए उस वेब पेज को लोड करें। आप और मैं उस ब्राउज़र में एक बग होने पर विचार कर सकता हूं; उस ब्राउज़र के डेवलपर्स असहमत होने के लिए स्वागत करते हैं।

मैं ने पाया है कि बाजार के लिए क्रोम नेविगेट: // details? Id = com.myapp Play स्टोर

यह करने के लिए वापस चला जाता है "डेवलपर्स वे क्या चाहते हैं कर सकते हैं" नहीं खुलता हिस्सा । यदि आपने उस यूआरएल पर किसी वेब पेज में एक लिंक पर क्लिक किया है, तो एक मौका है कि क्रोम आपको Play Store पर ले जाएगा। हालांकि, क्रोम को एड्रेस बार के इलाज के लिए बाध्य नहीं है क्योंकि यह किसी वेब पेज में एक लिंक का इलाज करता है।

2

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

आप उपयोगकर्ता के ड्राइव एक्शन (उदाहरण के लिए एक मानक <a> टैग) के पीछे गहरा लिंक डालकर कुछ हद तक काम कर सकते हैं, लेकिन क्रोम का अपना मानक मानक क्रोम इराद है जिसे आप इसके बजाय उपयोग करना चाहते हैं । आपके द्वारा उपयोग किए जा रहे डिवाइस के आधार पर, यह मानक ब्राउज़र के लिए भी मामला हो सकता है।

अन्य ऐप्स में, यह ऐप पर निर्भर करता है कि कस्टम यूआरआई योजना को 'क्लिक करने योग्य लिंक' के रूप में पहचाना जाता है या नहीं। सर्वोत्तम संगतता के लिए, आप इसे रीडायरेक्ट के साथ नियमित http:// लिंक के अंदर लपेटना चाहेंगे।

आप जटिलताओं गहरी चारों ओर जोड़ने के बारे में गहराई से स्पष्टीकरण में रुचि रखते हैं, this post एक अच्छी जगह शुरू करने के लिए है। तुम सिर्फ यह अतिरिक्त प्रयास की एक बहुत कुछ के बिना काम करना चाहते हैं, Branch.io (पूर्ण प्रकटीकरण: मैं शाखा टीम पर हूँ) एक मुफ्त सेवा के रूप में इस समस्या का हल।