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

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

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

सपोर्ट किए गए नए वर्शन को पाने के लिए, नए बिल्ड आर्टफ़ैक्ट देखें.

  • CarMediaApp.apk
  • TestMediaApp.apk

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

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

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

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

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

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

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

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

पहला चरण

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

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

<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>

दूसरा चरण

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

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

मकसद से जुड़ी जानकारी

इस सुविधा का इस्तेमाल करने के लिए, डेवलपर को Intent ऐक्शन, ACTION_MEDIA_TEMPLATE_V2 के साथ काम करने वाले मीडिया का सबसे नया वर्शन इंस्टॉल करना होगा. Intent ऐक्शन और यहां दी गई इंटेंट एक्स्ट्रा, 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 के साथ int एक्स्ट्रा फ़ील्ड के तौर पर किया जाता है. इससे यह तय किया जाता है कि खोज क्वेरी लोड होने के बाद, मीडिया को कौनसी कार्रवाई करनी है.

वैल्यू, 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"