मीडिया ऐप्लिकेशन में डीप लिंक इंटिग्रेट करना

इस दस्तावेज़ में, तीसरे पक्ष (3P) के ऐप्लिकेशन डेवलपर, AAOS मीडिया ऐप्लिकेशन में डीप लिंक जोड़ने का तरीका बताया गया है. मीडिया डीप लिंक की मदद से, AAOS मीडिया ऐप्लिकेशन को डीप लिंक के ज़रिए खोला जा सकता है. यह सुविधा, मोबाइल डिवाइस पर भी उपलब्ध है.

Play Books पर काम करने वाले वर्शन

Play Books पर काम करने वाले सबसे नए वर्शन के बारे में जानने के लिए, सबसे नया Build Artifacts देखें.

  • CarMediaApp.apk
  • TestMediaApp.apk

यह कैसे काम करता है

AAOS पर डीप लिंक खोलने पर, वह मीडिया ऐप्लिकेशन खुलता है जो खास स्कीम को हैंडल करता है. इसके बाद, मीडिया ऐप्लिकेशन यूआरएल को डिकोड करता है. इससे, उस लिंक में मौजूद जानकारी के साथ मीडिया इंटेंट बनता है. फिर, मीडिया स्क्रीन खोलने के लिए उस इंटेंट का इस्तेमाल किया जाता है.

नए इंटेंट और नए एक्स्ट्रा के लिए लागू करने का तरीका:

  • मीडिया, तीसरे पक्ष के डेवलपर को उन इंटेंट का अपडेट किया गया फ़ॉर्मैट उपलब्ध कराता है जिन्हें हैंडल किया जा सकता है. इससे, डेवलपर इंटेंट के ज़रिए मीडिया को ज़रूरी जानकारी भेज सकते हैं.

  • तीसरे पक्ष के ऐप्लिकेशन से मिले उन इंटेंट को हैंडल करता है जिनमें कोई खास मीडिया आइटम या खोज क्वेरी शामिल होती है. इसके बाद, मीडिया में अनुरोध की गई जानकारी वाला पेज खुलता है.

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

तीसरे पक्ष के ऐप्लिकेशन के लिए ज़रूरी शर्तें

TestMediaApp ऐप्लिकेशन में मौजूद TmaTrampolineActivity को उदाहरण के तौर पर दिखाया गया है.

पहला चरण

डेवलपर के पास TestMediaApp में TmaTrampolineActivity जैसी कोई गतिविधि होनी चाहिए. डीप लिंक करने के लिए, इस गतिविधि के मेनिफ़ेस्ट में इंटेंट फ़िल्टर होना चाहिए. इस इंटेंट फ़िल्टर में, वे सभी यूआरएल शामिल होने चाहिए जिन्हें हैंडल किया जाना है . इसके बारे में, आने वाले लिंक के लिए इंटेंट फ़िल्टर जोड़ना लेख में बताया गया है.

हमारा सुझाव है कि इंटेंट फ़िल्टर में वे स्कीमा और होस्ट शामिल किए जाएं जिनका इस्तेमाल, फ़ोन वर्शन वाला ऐप्लिकेशन करता है. इससे यह पक्का किया जा सकेगा कि डीप लिंक, सभी प्लैटफ़ॉर्म पर काम करें.

<activity android:name=".automotive.TmaTrampolineActivity"
                  android:exported="true">
            <intent-filter android:label="TmaTrampolineActivity_label">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="app"
                      android:host="com.android.car.media.testmediaapp"/>
            </intent-filter>
        </activity>

दूसरा चरण

इस गतिविधि में, मीडिया ऐप्लिकेशन लिंक से जानकारी लेता है और मीडिया के लिए एक इंटेंट बनाता है.

मीडिया, दो फ़ंक्शन के साथ काम करता है. पहला फ़ंक्शन, किसी खास मीडिया आइटम के साथ मीडिया आइटम खोलना है. वहीं, दूसरा फ़ंक्शन, खोज क्वेरी के नतीजे दिखाना है. इंटेंट एक्स्ट्रा में, मीडिया आइटम आईडी या खोज क्वेरी स्ट्रिंग शामिल होनी चाहिए.

इंटेंट की जानकारी

इस सुविधा का इस्तेमाल करने के लिए, डेवलपर को मीडिया का सबसे नया वर्शन इंस्टॉल करना होगा, ताकि इंटेंट कार्रवाई ACTION_MEDIA_TEMPLATE_V2 काम कर सके. MediaIntentExtras.java क्लास में, इंटेंट ऐक्शन और ये इंटेंट एक्स्ट्रा शामिल हैं. इन एक्स्ट्रा को इंटेंट में जोड़ा जा सकता है.

एक्स्ट्रा का नाम मान ब्यौरा
EXTRA_KEY_MEDIA_COMPONENT componentName के लिए स्ट्रिंग ACTION_MEDIA_TEMPLATE_V2 के साथ, स्ट्रिंग एक्स्ट्रा फ़ील्ड के तौर पर इस्तेमाल की जाने वाली कुंजी. इससे, उस MediaBrowserService के बारे में बताया जाता है जिस पर उपयोगकर्ता मीडिया शुरू करना चाहता है. अगर यह जानकारी नहीं दी जाती है, तो चालू मीडिया सोर्स खुलता है.
EXTRA_KEY_MEDIA_ID मीडिया आईडी ACTION_MEDIA_TEMPLATE_V2 के साथ, स्ट्रिंग एक्स्ट्रा फ़ील्ड के तौर पर इस्तेमाल की जाने वाली कुंजी. इससे, उस मीडिया आइटम के बारे में बताया जाता है जिसे ब्राउज़ करें व्यू में दिखाया जाना चाहिए. यह MediaBrowserServiceCompat API में इस्तेमाल किए गए आईडी से मेल खाना चाहिए.
EXTRA_KEY_SEARCH_QUERY खोज क्वेरी ACTION_MEDIA_TEMPLATE_V2 के साथ, स्ट्रिंग एक्स्ट्रा फ़ील्ड के तौर पर इस्तेमाल की जाने वाली कुंजी. इससे, खोज क्वेरी को मौजूदा MediaBrowserService या EXTRA_KEY_MEDIA_COMPONENT के साथ तय की गई MediaBrowserService को भेजने के बारे में बताया जाता है
EXTRA_KEY_SEARCH_ACTION

पूर्णांक:

  • 0: EXTRA_VALUE_NO_SEARCH_ACTION
  • 1: EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH
ACTION_MEDIA_TEMPLATE_V2 के साथ, इंट एक्स्ट्रा फ़ील्ड के तौर पर इस्तेमाल की जाने वाली कुंजी. इससे, खोज क्वेरी लोड होने के बाद, मीडिया के लिए की जाने वाली कार्रवाई के बारे में बताया जाता है.

इसकी वैल्यू, EXTRA_VALUE_NO_SEARCH_ACTION या EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH में से कोई एक होती है. इस एक्स्ट्रा का इस्तेमाल, सिर्फ़ EXTRA_KEY_SEARCH_QUERY के साथ किया जाना चाहिए.

अगर यह एक्स्ट्रा तय नहीं किया जाता है, तो खोज के नतीजे लोड होने के बाद कोई कार्रवाई नहीं की जाती.

विशेष मामले

अगर इंटेंट में एक साथ कई एक्स्ट्रा जोड़े जाते हैं, जैसे कि इस इंटेंट में EXTRA_KEY_MEDIA_ID और EXTRA_KEY_SEARCH_QUERY दोनों शामिल हैं, तो मौजूदा तरीके में मीडिया आईडी को पहले हैंडल किया जाता है. मीडिया आईडी खाली होने पर ही, मीडिया खोज क्वेरी चलाता है.

टेस्ट

तीसरे पक्ष के मीडिया ऐप्लिकेशन को इंटिग्रेट करने के बाद, डीप लिंक भेजने के लिए adb कमांड का इस्तेमाल करें. मीडिया, अनुरोध की गई जानकारी के साथ खुलता है. उदाहरण के लिए, TestMediaApp के लिए यह कमांड:

adb shell am start -W -a android.intent.action.VIEW -d "https://www.testmediaapp.com/path?search=normal\&searchAction=1"