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

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

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

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

  • 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 इंटेंट ऐक्शन के साथ काम करने के लिए, Media का सबसे नया वर्शन इंस्टॉल करना होगा. इंटेंट ऐक्शन और इंटेंट के ये एक्सट्रा, 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 के साथ बताई गई सेवा को भेजी जाने वाली खोज क्वेरी की जानकारी मिलती है
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"