अपने उपयोगकर्ताओं तक पहुंचकर, ऐप्लिकेशन में यूज़र ऐक्टिविटी बढ़ाएं. Engage SDK टूल को इंटिग्रेट करें, ताकि लोगों को उनकी दिलचस्पी के मुताबिक सुझाव और 'देखना जारी रखें' कॉन्टेंट सीधे उपयोगकर्ता के डिवाइस पर अलग-अलग प्लैटफ़ॉर्म पर दिखे. जैसे, कलेक्शन, टीवी, फ़िल्में वगैरह एक ही जगह पर देखने की सुविधा, और Play Store. इंटिग्रेशन की वजह से, औसत APK में 50 केबी (कंप्रेस किया गया) से कम का डेटा जुड़ता है. साथ ही, ज़्यादातर ऐप्लिकेशन के लिए डेवलपर को एक हफ़्ते का समय लगता है. ज़्यादा जानने के लिए, हमारी कारोबार की साइट पर जाएं.
इस गाइड में, डेवलपर पार्टनर के लिए निर्देश दिए गए हैं. इनकी मदद से, वे Engage की कॉन्टेंट वाली जगहों पर ऑडियो कॉन्टेंट (संगीत, पॉडकास्ट, ऑडियो बुक, लाइव रेडियो) डिलीवर कर सकते हैं.
इंटिग्रेशन की जानकारी
शब्दावली
इस इंटिग्रेशन में, तीन तरह के क्लस्टर शामिल होते हैं: सुझाव, जारी रखें, और चुनिंदा.
सुझाव के क्लस्टर, किसी एक डेवलपर पार्टनर के कॉन्टेंट में से आपकी दिलचस्पी के हिसाब से सुझाव दिखाते हैं.
आपको इस तरह के सुझाव दिखेंगे:
सुझाव के क्लस्टर: एक यूज़र इंटरफ़ेस (यूआई) दिखता है. इसमें एक ही डेवलपर पार्टनर के कॉन्टेंट में सुझाव दिखाए जाते हैं.
पहली इमेज. यह टीवी, फ़िल्में वगैरह एक ही जगह पर देखने की सुविधा का यूज़र इंटरफ़ेस है. इसमें किसी एक पार्टनर के कॉन्टेंट में से सुझाव दिखाए जा रहे हैं. इकाई: इसमें एक कॉन्टेंट दिखता है. कोई इकाई, प्लेलिस्ट, ऑडियो बुक, पॉडकास्ट वगैरह हो सकती है. इकाई के काम करने वाले टाइप की सूची देखने के लिए, इकाई का डेटा दें सेक्शन देखें.
दूसरी इमेज. यह टीवी, फ़िल्में वगैरह एक ही जगह पर देखने की सुविधा का यूज़र इंटरफ़ेस (यूआई) है. इसमें किसी एक पार्टनर के सुझाव वाले क्लस्टर में एक इकाई दिख रही है.
जारी रखने वाला क्लस्टर, एक ही यूज़र इंटरफ़ेस (यूआई) ग्रुपिंग में, कई डेवलपर पार्टनर के ऐसे ऑडियो कॉन्टेंट को दिखाता है जिसमें उपयोगकर्ताओं ने हाल ही में दिलचस्पी दिखाई है. हर डेवलपर पार्टनर को, जारी रखने वाले क्लस्टर में ज़्यादा से ज़्यादा 10 इकाइयां ब्रॉडकास्ट करने की अनुमति होगी.
तीसरी इमेज. टीवी, फ़िल्में वगैरह एक ही जगह पर देखने की सुविधा वाले यूज़र इंटरफ़ेस (यूआई), जिसमें एक से ज़्यादा पार्टनर के अधूरे सुझावों के साथ, वीडियो देखने के लिए सुझावों का क्लस्टर दिखाया गया है. फ़िलहाल, इसमें सिर्फ़ एक सुझाव दिख रहा है. चुनिंदा क्लस्टर, एक ही यूज़र इंटरफ़ेस (यूआई) ग्रुपिंग में, कई डेवलपर पार्टनर के आइटम दिखाता है. एक ही फ़ीचर्ड क्लस्टर होगा. यह यूज़र इंटरफ़ेस (यूआई) में सबसे ऊपर दिखेगा. इसे सभी सुझाव क्लस्टर से ऊपर रखा जाएगा. हर डेवलपर पार्टनर को, चुनिंदा क्लस्टर में ज़्यादा से ज़्यादा 10 इकाइयां ब्रॉडकास्ट करने की अनुमति होगी.
चौथी इमेज. टीवी, फ़िल्में वगैरह एक ही जगह पर देखने की सुविधा वाले यूज़र इंटरफ़ेस (यूआई) में कई पार्टनर के सुझावों के साथ, चुनिंदा क्लस्टर दिखाया गया है. फ़िलहाल, सिर्फ़ एक सुझाव दिख रहा है.
प्री-वर्क
कम से कम एपीआई लेवल: 19
अपने ऐप्लिकेशन में com.google.android.engage:engage-core लाइब्रेरी जोड़ें:
dependencies {
// Make sure you also include that repository in your project's build.gradle file.
implementation 'com.google.android.engage:engage-core:1.6.0'
}
खास जानकारी
यह डिज़ाइन, बाउंड सर्विस के लागू होने पर आधारित है.
कोई क्लाइंट, अलग-अलग क्लस्टर टाइप के लिए इतना डेटा पब्लिश कर सकता है:
| क्लस्टर का टाइप | क्लस्टर की सीमाएं | किसी क्लस्टर में ज़्यादा से ज़्यादा कितनी इकाइयां हो सकती हैं |
|---|---|---|
| सुझाव वाले क्लस्टर | ज़्यादा से ज़्यादा 7 | ज़्यादा से ज़्यादा 50 |
| जारी रखने वाला क्लस्टर | ज़्यादा से ज़्यादा 1 | ज़्यादा से ज़्यादा 20 |
| चुनिंदा क्लस्टर | ज़्यादा से ज़्यादा 1 | ज़्यादा से ज़्यादा 20 |
पहला चरण: इकाई का डेटा उपलब्ध कराना
एसडीके ने हर आइटम टाइप को दिखाने के लिए अलग-अलग इकाइयां तय की हैं. हम 'सुनें' कैटगरी के लिए, इन इकाइयों के साथ काम करते हैं:
MusicAlbumEntityMusicArtistEntityMusicTrackEntityMusicVideoEntityPlaylistEntityPodcastSeriesEntityPodcastEpisodeEntityLiveRadioStationEntityAudiobookEntity
यहां दिए गए चार्ट में, हर टाइप के लिए उपलब्ध एट्रिब्यूट और ज़रूरी शर्तों के बारे में बताया गया है.
MusicAlbumEntity
MusicAlbumEntity ऑब्जेक्ट, संगीत एल्बम को दिखाता है. उदाहरण के लिए, टेलर स्विफ़्ट का Midnights.
| एट्रिब्यूट | ज़रूरी शर्त | नोट |
|---|---|---|
| नाम | ज़रूरी है | म्यूज़िक एल्बम का टाइटल. |
| पोस्टर इमेज | ज़रूरी है | कम से कम एक इमेज देना ज़रूरी है. दिशा-निर्देशों के लिए, इमेज की जानकारी देखें. |
| जानकारी वाले पेज का यूआरआई | ज़रूरी है |
संगीत एल्बम की जानकारी के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| कलाकार | ज़रूरी है | संगीत एल्बम में शामिल कलाकारों की सूची. |
| प्लेबैक यूआरआई | वैकल्पिक |
ऐसा डीप लिंक जो सेवा देने वाली कंपनी के ऐप्लिकेशन में एल्बम को चलाना शुरू करता है. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| ब्यौरा | वैकल्पिक | अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए. |
| गानों की संख्या | वैकल्पिक | म्यूज़िक एल्बम में गानों की संख्या. |
| शैलियां | वैकल्पिक | संगीत एल्बम में मौजूद शैलियों की सूची. |
| एल्बम का फ़ॉर्मैट | वैकल्पिक |
एल्बम (इसमें एलपी और डबल एलपी शामिल हैं) ईपी सिंगल मिक्सटेप |
| संगीत लेबल | वैकल्पिक | एल्बम से जुड़े संगीत लेबल की सूची. |
| डिवाइस पर डाउनलोड किया गया | वैकल्पिक | बूलियन से पता चलता है कि संगीत एल्बम को डिवाइस पर डाउनलोड किया गया है या नहीं. |
| अश्लील कॉन्टेंट | वैकल्पिक |
यह बूलियन वैल्यू बताती है कि कॉन्टेंट अश्लील है या नहीं जिन आइटम में यौन कॉन्टेंट शामिल है या जिनमें माता-पिता के लिए चेतावनी दी गई है उन्हें TRUE पर सेट किया जाना चाहिए. अश्लील कॉन्टेंट वाले आइटम, "E" टैग के साथ दिखते हैं. |
| रिलीज़ की तारीख | वैकल्पिक | एलबम के रिलीज़ होने की तारीख, epoch मिलीसेकंड में. |
| कुल समय | वैकल्पिक | एल्बम की अवधि, मिलीसेकंड में. |
| लास्ट यूज़र ऐक्टिविटी का समय | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है. एपिक मिलीसेकंड में |
| प्रोग्रेस का प्रतिशत | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. 0 से 100 के बीच का पूर्णांक |
MusicArtistEntity
MusicArtistEntity ऑब्जेक्ट, संगीत कलाकार (उदाहरण के लिए, Adele) को दिखाता है.
| एट्रिब्यूट | ज़रूरी शर्त | नोट |
|---|---|---|
| नाम | ज़रूरी है | संगीत कलाकार का नाम. |
| पोस्टर इमेज | ज़रूरी है | कम से कम एक इमेज देना ज़रूरी है. दिशा-निर्देशों के लिए, इमेज की जानकारी देखें. |
| जानकारी वाले पेज का यूआरआई | ज़रूरी है |
संगीत कलाकार के बारे में जानकारी देने के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| प्लेबैक यूआरआई | वैकल्पिक |
यह डीप लिंक, सेवा देने वाली कंपनी के ऐप्लिकेशन में कलाकार के गाने चलाना शुरू कर देता है. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| ब्यौरा | वैकल्पिक | अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए. |
| लास्ट यूज़र ऐक्टिविटी का समय | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है. एपिक मिलीसेकंड में |
MusicTrackEntity
MusicTrackEntity ऑब्जेक्ट, किसी म्यूज़िक ट्रैक को दिखाता है. उदाहरण के लिए, Coldplay का Yellow.
| एट्रिब्यूट | ज़रूरी शर्त | नोट |
|---|---|---|
| नाम | ज़रूरी है | संगीत ट्रैक का टाइटल. |
| पोस्टर इमेज | ज़रूरी है | कम से कम एक इमेज देना ज़रूरी है. दिशा-निर्देशों के लिए, इमेज की जानकारी देखें. |
| प्लेबैक यूआरआई | ज़रूरी है |
ऐसा डीप लिंक जो सेवा देने वाली कंपनी के ऐप्लिकेशन में संगीत ट्रैक चलाना शुरू करता है. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| कलाकार | ज़रूरी है | संगीत ट्रैक के लिए कलाकारों की सूची. |
| जानकारी वाले पेज का यूआरआई | वैकल्पिक |
संगीत ट्रैक के बारे में जानकारी देने के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| ब्यौरा | वैकल्पिक | अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए. |
| कुल समय | वैकल्पिक | ट्रैक की अवधि, मिलीसेकंड में. |
| एल्बम | वैकल्पिक | उस एल्बम का नाम जिसमें यह गाना शामिल है. |
| डिवाइस पर डाउनलोड किया गया | वैकल्पिक | बूलियन से पता चलता है कि संगीत ट्रैक को डिवाइस पर डाउनलोड किया गया है या नहीं. |
| अश्लील कॉन्टेंट | वैकल्पिक |
यह बूलियन वैल्यू बताती है कि कॉन्टेंट अश्लील है या नहीं जिन आइटम में यौन कॉन्टेंट शामिल है या जिनमें माता-पिता के लिए चेतावनी दी गई है उन्हें TRUE पर सेट किया जाना चाहिए. अश्लील कॉन्टेंट वाले आइटम, "E" टैग के साथ दिखते हैं. |
| लास्ट यूज़र ऐक्टिविटी का समय | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है. एपिक मिलीसेकंड में |
| प्रोग्रेस का प्रतिशत | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. 0 से 100 के बीच का पूर्णांक |
MusicVideoEntity
MusicVideoEntity ऑब्जेक्ट, किसी म्यूज़िक वीडियो को दिखाता है. उदाहरण के लिए, The Weeknd - Take My Breath (आधिकारिक संगीत वीडियो).
| एट्रिब्यूट | ज़रूरी शर्त | नोट |
|---|---|---|
| नाम | ज़रूरी है | म्यूज़िक वीडियो का टाइटल. |
| पोस्टर इमेज | ज़रूरी है | कम से कम एक इमेज देना ज़रूरी है. दिशा-निर्देशों के लिए, इमेज की जानकारी देखें. |
| प्लेबैक यूआरआई | ज़रूरी है |
ऐसा डीप लिंक जो सेवा देने वाली कंपनी के ऐप्लिकेशन में म्यूज़िक वीडियो चलाना शुरू करता है. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| जानकारी वाले पेज का यूआरआई | वैकल्पिक |
संगीत वीडियो की जानकारी के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| कुल समय | वैकल्पिक | वीडियो की अवधि, मिलीसेकंड में. |
| व्यू की संख्या | वैकल्पिक | मुफ़्त टेक्स्ट फ़ॉर्मैट में वीडियो के व्यू की संख्या. |
| कलाकार | वैकल्पिक | म्यूज़िक वीडियो में शामिल कलाकारों की सूची. |
| कॉन्टेंट रेटिंग | वैकल्पिक | ट्रैक की कॉन्टेंट रेटिंग की सूची. |
| ब्यौरा | वैकल्पिक | अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए. |
| डिवाइस पर डाउनलोड किया गया | वैकल्पिक | बूलियन यह बताता है कि म्यूज़िक वीडियो को डिवाइस पर डाउनलोड किया गया है या नहीं. |
| अश्लील कॉन्टेंट | वैकल्पिक |
यह बूलियन वैल्यू बताती है कि कॉन्टेंट अश्लील है या नहीं जिन आइटम में यौन कॉन्टेंट शामिल है या जिनमें माता-पिता के लिए चेतावनी दी गई है उन्हें TRUE पर सेट किया जाना चाहिए. अश्लील कॉन्टेंट वाले आइटम, "E" टैग के साथ दिखते हैं. |
| लास्ट यूज़र ऐक्टिविटी का समय | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है. एपिक मिलीसेकंड में |
| प्रोग्रेस का प्रतिशत | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. 0 से 100 के बीच का पूर्णांक |
PlaylistEntity
PlaylistEntity ऑब्जेक्ट, संगीत की प्लेलिस्ट को दिखाता है. उदाहरण के लिए, अमेरिका की टॉप 10 प्लेलिस्ट.
| एट्रिब्यूट | ज़रूरी शर्त | नोट |
|---|---|---|
| नाम | ज़रूरी है | प्लेलिस्ट का टाइटल. |
| पोस्टर इमेज | ज़रूरी है | कम से कम एक इमेज देना ज़रूरी है. दिशा-निर्देशों के लिए, इमेज की जानकारी देखें. |
| प्लेबैक यूआरआई | ज़रूरी है |
ऐसा डीप लिंक जो सेवा देने वाली कंपनी के ऐप्लिकेशन में संगीत की प्लेलिस्ट चलाना शुरू करता है. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| जानकारी वाले पेज का यूआरआई | वैकल्पिक |
संगीत की प्लेलिस्ट के बारे में जानकारी देने के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| कुल समय | वैकल्पिक | प्लेलिस्ट की अवधि, मिलीसेकंड में. |
| गानों की संख्या | वैकल्पिक | संगीत की प्लेलिस्ट में मौजूद गानों की संख्या. |
| ब्यौरा | वैकल्पिक | अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए. |
| डिवाइस पर डाउनलोड किया गया | वैकल्पिक | बूलियन से पता चलता है कि प्लेलिस्ट को डिवाइस पर डाउनलोड किया गया है या नहीं. |
| अश्लील कॉन्टेंट | वैकल्पिक |
यह बूलियन वैल्यू बताती है कि कॉन्टेंट अश्लील है या नहीं जिन आइटम में यौन कॉन्टेंट शामिल है या जिनमें माता-पिता के लिए चेतावनी दी गई है उन्हें TRUE पर सेट किया जाना चाहिए. अश्लील कॉन्टेंट वाले आइटम, "E" टैग के साथ दिखते हैं. |
| लास्ट यूज़र ऐक्टिविटी का समय | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है. एपिक मिलीसेकंड में |
| प्रोग्रेस का प्रतिशत | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. 0 से 100 के बीच का पूर्णांक |
PodcastSeriesEntity
PodcastSeriesEntity ऑब्जेक्ट, पॉडकास्ट सीरीज़ के बारे में जानकारी देता है. उदाहरण के लिए, This American Life.
| एट्रिब्यूट | ज़रूरी शर्त | नोट |
|---|---|---|
| नाम | ज़रूरी है | पॉडकास्ट सीरीज़ का टाइटल. |
| पोस्टर इमेज | ज़रूरी है | कम से कम एक इमेज देना ज़रूरी है. दिशा-निर्देशों के लिए, इमेज की जानकारी देखें. |
| जानकारी वाले पेज का यूआरआई | ज़रूरी है |
पॉडकास्ट सीरीज़ के बारे में जानकारी देने के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| प्लेबैक यूआरआई | वैकल्पिक |
यह एक डीप लिंक होता है. इससे पॉडकास्ट सेवा देने वाले व्यक्ति या कंपनी के लिए ऐप्लिकेशन में पॉडकास्ट सीरीज़ चलने लगती है. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| एपिसोड की कुल संख्या | वैकल्पिक | पॉडकास्ट सीरीज़ में एपिसोड की संख्या. |
| प्रोडक्शन का नाम | वैकल्पिक | पॉडकास्ट सीरीज़ के प्रोडक्शन का नाम. |
| होस्ट | वैकल्पिक | पॉडकास्ट सीरीज़ के होस्ट की सूची. |
| शैलियां | वैकल्पिक | पॉडकास्ट सीरीज़ की शैलियों की सूची. |
| डिवाइस पर डाउनलोड किया गया | वैकल्पिक | बूलियन से पता चलता है कि पॉडकास्ट को डिवाइस पर डाउनलोड किया गया है या नहीं. |
| ब्यौरा | वैकल्पिक | अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए. |
| अश्लील कॉन्टेंट | वैकल्पिक |
यह बूलियन वैल्यू बताती है कि कॉन्टेंट अश्लील है या नहीं जिन आइटम में यौन कॉन्टेंट शामिल है या जिनमें माता-पिता के लिए चेतावनी दी गई है उन्हें TRUE पर सेट किया जाना चाहिए. अश्लील कॉन्टेंट वाले आइटम, "E" टैग के साथ दिखते हैं. |
| लास्ट यूज़र ऐक्टिविटी का समय | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है. एपिक मिलीसेकंड में |
PodcastEpisodeEntity
PodcastEpisodeEntity ऑब्जेक्ट, पॉडकास्ट सीरीज़ को दिखाता है. उदाहरण के लिए, स्पार्क बर्ड, एपिसोड 754: दिस अमेरिकन लाइफ़.
| एट्रिब्यूट | ज़रूरी शर्त | नोट |
|---|---|---|
| नाम | ज़रूरी है | पॉडकास्ट एपिसोड का शीर्षक. |
| पोस्टर इमेज | ज़रूरी है | कम से कम एक इमेज देना ज़रूरी है. दिशा-निर्देशों के लिए, इमेज की जानकारी देखें. |
| प्लेबैक यूआरआई | ज़रूरी है |
यह एक डीप लिंक है. इससे सेवा देने वाली कंपनी के ऐप्लिकेशन में पॉडकास्ट का एपिसोड चलना शुरू हो जाता है. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| पॉडकास्ट सीरीज़ का टाइटल | ज़रूरी है | यह टैग, पॉडकास्ट सीरीज़ का नाम बताता है. यह उस सीरीज़ का नाम होता है जिसका यह एपिसोड है. |
| कुल समय | ज़रूरी है | पॉडकास्ट के एपिसोड की अवधि, मिलीसेकंड में. |
| प्रकाशन तारीख | ज़रूरी है | पॉडकास्ट पब्लिश करने की तारीख (epoch मिलीसेकंड में) |
| जानकारी वाले पेज का यूआरआई | वैकल्पिक |
पॉडकास्ट एपिसोड की जानकारी के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| प्रोडक्शन का नाम | वैकल्पिक | पॉडकास्ट सीरीज़ के प्रोडक्शन का नाम. |
| एपिसोड इंडेक्स | वैकल्पिक | सीरीज़ में एपिसोड का इंडेक्स. पहला इंडेक्स 1 होता है. |
| होस्ट | वैकल्पिक | पॉडकास्ट के एपिसोड के होस्ट की सूची. |
| शैलियां | वैकल्पिक | पॉडकास्ट के एपिसोड की शैलियों की सूची. |
| डिवाइस पर डाउनलोड किया गया | वैकल्पिक | बूलियन से पता चलता है कि पॉडकास्ट का एपिसोड डिवाइस पर डाउनलोड किया गया है या नहीं. |
| ब्यौरा | वैकल्पिक | अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए. |
| वीडियो पॉडकास्ट | वैकल्पिक | बूलियन वैल्यू से पता चलता है कि पॉडकास्ट के एपिसोड में वीडियो कॉन्टेंट है या नहीं |
| अश्लील कॉन्टेंट | वैकल्पिक |
यह बूलियन वैल्यू बताती है कि कॉन्टेंट अश्लील है या नहीं जिन आइटम में यौन कॉन्टेंट शामिल है या जिनमें माता-पिता के लिए चेतावनी दी गई है उन्हें TRUE पर सेट किया जाना चाहिए. अश्लील कॉन्टेंट वाले आइटम, "E" टैग के साथ दिखते हैं. |
| 'अगला सुनें' टाइप करें | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए सुझाया गया लेबल TYPE_CONTINUE - अधूरे ऑडियो आइटम को फिर से शुरू करें. TYPE_NEXT - किसी सीरीज़ के नए आइटम पर जारी रखें. TYPE_NEW - हाल ही में रिलीज़ किया गया. |
| लास्ट यूज़र ऐक्टिविटी का समय | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है. एपिक मिलीसेकंड में |
| प्रोग्रेस का प्रतिशत | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. 0 से 100 के बीच का पूर्णांक |
LiveRadioStationEntity
LiveRadioStationEntity ऑब्जेक्ट, लाइव रेडियो स्टेशन को दिखाता है. उदाहरण के लिए, 98.1 The Breeze.
| एट्रिब्यूट | ज़रूरी शर्त | नोट |
|---|---|---|
| नाम | ज़रूरी है | लाइव रेडियो स्टेशन का टाइटल. |
| पोस्टर इमेज | ज़रूरी है | कम से कम एक इमेज देना ज़रूरी है. दिशा-निर्देशों के लिए, इमेज की जानकारी देखें. |
| प्लेबैक यूआरआई | ज़रूरी है |
यह एक डीप लिंक है. इससे, रेडियो स्टेशन को सेवा देने वाली कंपनी के ऐप्लिकेशन में चलाना शुरू किया जा सकता है. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| जानकारी वाले पेज का यूआरआई | वैकल्पिक |
रेडियो स्टेशन के बारे में जानकारी देने के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| आवृत्ति | वैकल्पिक | रेडियो स्टेशन की ब्रॉडकास्ट फ़्रीक्वेंसी. उदाहरण के लिए, "98.1 FM". |
| शीर्षक दिखाएं | वैकल्पिक | रेडियो स्टेशन पर फ़िलहाल चल रहा शो. |
| होस्ट | वैकल्पिक | रेडियो स्टेशन के होस्ट की सूची. |
| ब्यौरा | वैकल्पिक | अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए. |
| लास्ट यूज़र ऐक्टिविटी का समय | वैकल्पिक |
जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए इसका सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है. एपिक मिलीसेकंड में |
AudiobookEntity
AudiobookEntity ऑब्जेक्ट, ऑडियो बुक को दिखाता है. उदाहरण के लिए, मिशेल ओबामा की ऑडियो बुक Becoming.
| एट्रिब्यूट | ज़रूरी शर्त | नोट |
|---|---|---|
| नाम | ज़रूरी है | |
| पोस्टर इमेज | ज़रूरी है | कम से कम एक इमेज देना ज़रूरी है. दिशा-निर्देशों के लिए, इमेज की जानकारी देखें. |
| लेखक | ज़रूरी है | कम से कम एक लेखक का नाम देना ज़रूरी है. |
| कार्रवाई करने के लिंक का यूआरआई | ज़रूरी है |
ऑडियो बुक के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले इस सवाल का जवाब देखें |
| Narrator | वैकल्पिक | कम से कम एक नेरेटर का नाम देना ज़रूरी है. |
| पब्लिश होने की तारीख | वैकल्पिक | अगर दिया गया है, तो एपक मिलीसेकंड में. |
| ब्यौरा | वैकल्पिक | अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए. |
| कीमत | वैकल्पिक | फ़्री टेक्स्ट |
| कुल समय | वैकल्पिक | अगर यह वैल्यू दी गई है, तो यह पॉज़िटिव होनी चाहिए. |
| शैली | वैकल्पिक | किताब से जुड़ी शैलियों की सूची. |
| सीरीज़ का नाम | वैकल्पिक | उस सीरीज़ का नाम जिससे ऑडियो बुक जुड़ी है. उदाहरण के लिए, हैरी पॉटर. |
| सीरीज़ यूनिट इंडेक्स | वैकल्पिक | सीरीज़ में ऑडियो बुक का इंडेक्स. इसमें 1 का मतलब है कि यह सीरीज़ की पहली ऑडियो बुक है. उदाहरण के लिए, अगर हैरी पॉटर ऐंड द प्रिज़नर ऑफ़ अज़्काबान सीरीज़ की तीसरी किताब है, तो इसे 3 पर सेट किया जाना चाहिए. |
| Continue book type | वैकल्पिक |
TYPE_CONTINUE - किसी ऐसी किताब को फिर से पढ़ना शुरू करें जिसे आपने पूरा नहीं किया है. TYPE_NEXT - किसी सीरीज़ के नए आइटम पर जारी रखें. TYPE_NEW - हाल ही में रिलीज़ किया गया. |
| पिछली बार जुड़ाव का समय | कुछ शर्तों के मुताबिक ज़रूरी है | अगर आइटम 'जारी रखने वाले क्लस्टर' में है, तो यह एट्रिब्यूट देना ज़रूरी है. एपक मिलीसेकंड में. |
| प्रोग्रेस का प्रतिशत | कुछ शर्तों के मुताबिक ज़रूरी है |
अगर आइटम 'जारी रखने वाले क्लस्टर' में है, तो यह एट्रिब्यूट देना ज़रूरी है. हाल ही में खरीदी गई ऑडियो बुक, 'पढ़ना जारी रखें' क्लस्टर में शामिल हो सकती हैं. वैल्यू 0 से ज़्यादा और 100 से कम होनी चाहिए. |
| DisplayTimeWindow - Set a time window for a content to be shown on the surface | ||
| शुरू होने का टाइमस्टैंप | वैकल्पिक |
यह इपोक टाइमस्टैंप है. इसके बाद, कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जाना चाहिए. इस नीति को सेट न करने पर, कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है. एपक मिलीसेकंड में. |
| खत्म होने का टाइमस्टैंप | वैकल्पिक |
यह ऐसा इपोक टाइमस्टैंप होता है जिसके बाद, कॉन्टेंट को प्लैटफ़ॉर्म पर नहीं दिखाया जाता. इस नीति को सेट न करने पर, कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है. एपक मिलीसेकंड में. |
इमेज की जानकारी
इमेज ऐसेट के लिए ज़रूरी शर्तें यहां दी गई हैं:
| आसपेक्ट रेशियो | ज़रूरी शर्त | कम से कम पिक्सल | सुझाए गए पिक्सल |
|---|---|---|---|
| स्क्वेयर (1x1) | ज़रूरी है | 300x300 | 1200x1200 |
| लैंडस्केप (1.91x1) | वैकल्पिक | 600x314 | 1200x628 |
| पोर्ट्रेट (4x5) | वैकल्पिक | 480x600 | 960x1200 |
फ़ाइल फ़ॉर्मैट
PNG, JPG, स्टैटिक GIF, WebP
फ़ाइल का ज़्यादा से ज़्यादा साइज़
5120 केबी
अन्य सुझाव
- इमेज के लिए सुझाया गया सेफ़ एरिया: अपने मुख्य कॉन्टेंट को इमेज के बीच वाले 80% हिस्से में रखें.
उदाहरण
MusicAlbumEntity musicAlbumEntity =
new MusicAlbumEntity.Builder()
.setName(NAME)
.addPosterImage(new Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(960)
.setImageWidthInPixel(408)
.build())
.setPlayBackUri("https://play.google/album/play")
.setInfoPageUri("https://play.google/album/info")
.setDescription("A description of this album.")
.addArtist("Artist")
.addGenre("Genre")
.addMusicLabel("Label")
.addContentRating("Rating")
.setSongsCount(960)
.setReleaseDateEpochMillis(1633032895L)
.setDurationMillis(1633L)
.build();
AudiobookEntity audiobookEntity =
new AudiobookEntity.Builder()
.setName("Becoming")
.addPosterImage(new Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(960)
.setImageWidthInPixel(408)
.build())
.addAuthor("Michelle Obama")
.addNarrator("Michelle Obama")
.setActionLinkUri(
Uri.parse("https://play.google/audiobooks/1"))
.setDurationMillis(16335L)
.setPublishDateEpochMillis(1633032895L)
.setDescription("An intimate, powerful, and inspiring memoir")
.setPrice("$16.95")
.addGenre("biography")
.build();
दूसरा चरण: क्लस्टर का डेटा उपलब्ध कराना
हमारा सुझाव है कि कॉन्टेंट पब्लिश करने के टास्क को बैकग्राउंड में पूरा किया जाए. उदाहरण के लिए, WorkManager का इस्तेमाल करके. साथ ही, इसे नियमित तौर पर या किसी इवेंट के आधार पर शेड्यूल किया जाए. उदाहरण के लिए, हर बार जब उपयोगकर्ता ऐप्लिकेशन खोलता है या जब वह कार्ट में कुछ जोड़ता है.
AppEngagePublishClient, क्लस्टर पब्लिश करने के लिए ज़िम्मेदार है. क्लाइंट में ये एपीआई उपलब्ध हैं:
isServiceAvailablepublishRecommendationClusterspublishFeaturedClusterpublishContinuationClusterpublishUserAccountManagementRequestupdatePublishStatusdeleteRecommendationsClustersdeleteFeaturedClusterdeleteContinuationClusterdeleteUserManagementClusterdeleteClusters
isServiceAvailable
इस एपीआई का इस्तेमाल यह देखने के लिए किया जाता है कि सेवा, इंटिग्रेशन के लिए उपलब्ध है या नहीं. साथ ही, यह भी देखा जाता है कि कॉन्टेंट को डिवाइस पर दिखाया जा सकता है या नहीं.
Engage SDK v1.6.0 और इसके बाद के वर्शन के लिए (सुझाया गया)
Android से जुड़ी स्किल
GitHub पर देखेंEngage SDK इंटिग्रेशन
android skills add --skill engage-sdk-integrationUse the engage-sdk-integration skill to use Engage SDK 1.6.0 and refactor isServiceAvailable to pass ServiceAvailabilityRequest for publishing all cluster types.आपको जिस क्लस्टर टाइप को पब्लिश करना है उसके लिए, सेवा की उपलब्धता देखी जा सकती है. isServiceAvailable एपीआई, अनुरोध ऑब्जेक्ट ServiceAvailabilityRequest स्वीकार करता है. इसमें क्लस्टर के वे टाइप शामिल होते हैं जिनके लिए सेवा की उपलब्धता की जांच करनी होती है. यहां दी गई टेबल में, ServiceAvailabilityRequest के लिए ज़रूरी ClusterType enum वैल्यू दी गई हैं.
| क्लस्टर का टाइप | क्लस्टर टाइप कॉन्स्टेंट | पूर्णांक वैल्यू |
|---|---|---|
| कोई जानकारी नहीं है | TYPE_UNKNOWN |
0 |
| सुझाव वाला क्लस्टर | TYPE_RECOMMENDATION |
1 |
| चुनिंदा क्लस्टर | TYPE_FEATURED |
2 |
| जारी रखने वाला क्लस्टर | TYPE_CONTINUATION |
3 |
| यूज़र मैनेजमेंट क्लस्टर | TYPE_ENGAGEMENT |
8 |
| सदस्यता क्लस्टर | TYPE_SUBSCRIPTION |
12 |
Kotlin
val request = ServiceAvailabilityRequest.Builder()
.addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
.addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
.build()
client.isServiceAvailable(request).addOnCompleteListener { task ->
if (task.isSuccessful) {
val availabilityMap = task.result
if (availabilityMap[ClusterType.TYPE_CONTINUATION] == true) {
// Proceed with publishing continuation content
}
if (availabilityMap[ClusterType.TYPE_RECOMMENDATION] == true) {
// Proceed with publishing recommendation content
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
}
Java
ServiceAvailabilityRequest request =
new ServiceAvailabilityRequest.Builder()
.addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
.addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
.build();
client.isServiceAvailable(request).addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Map<Integer, Boolean> availabilityMap = task.getResult();
if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_CONTINUATION))) {
// Proceed with publishing continuation content
}
if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_RECOMMENDATION))) {
// Proceed with publishing recommendation content
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
});
शर्तों के साथ सेवा की उपलब्धता की सुविधा
इंटिग्रेट किए गए कुछ ऐप्लिकेशन, खास कॉन्फ़िगरेशन का अनुरोध करते हैं. इससे Engage सेवा को समय-समय पर चालू और बंद किया जा सकता है, ताकि सेवा देने की लागत कम की जा सके. हालांकि, इस तरह से कॉन्टेंट को समय-समय पर शामिल किया जा सकता है, लेकिन इससे उपयोगकर्ता और प्रॉडक्ट पर बुरा असर पड़ता है. पुराना कॉन्टेंट नहीं दिखाया जाएगा और कुछ प्लैटफ़ॉर्म पर कॉन्टेंट नहीं दिखेगा.
Engage SDK के v1.6.0 वर्शन से, खास तरह के क्लस्टर के लिए उपलब्धता की जांच की जा सकती है. इससे ज़्यादा आसानी से काम किया जा सकता है.जैसे, अगर किसी ऐप्लिकेशन ने रुक-रुक कर कॉन्टेंट से जुड़ी रणनीति अपनाई है, तो कुछ क्लस्टर टाइप इस रणनीति का पालन कर सकते हैं. वहीं, अन्य क्लस्टर टाइप हमेशा चालू रहते हैं (यानी कि जारी रहने वाले क्लस्टर).
अगर किसी वजह से, Engage सेवा को सभी ज़रूरी डिवाइसों पर ‘हमेशा’ चालू नहीं रखना है और इसे कुछ डिवाइसों पर रुक-रुक कर चालू रखने के लिए कॉन्फ़िगर किया गया है, तो भी डिफ़ॉल्ट कॉन्फ़िगरेशन के हिसाब से, जारी रखने से जुड़े सभी क्लस्टर पब्लिकेशन (जैसे, सुनना जारी रखें) चालू रहेंगे. साथ ही, बाकी क्लस्टर टाइप रुक-रुक कर चालू और बंद होते रहेंगे. अगर आपको रुक-रुक कर डेटा ट्रांसफ़र करने की सुविधा का इस्तेमाल करना है, लेकिन यह डिफ़ॉल्ट कॉन्फ़िगरेशन आपकी ज़रूरतों के मुताबिक नहीं है, तो कृपया engage-developers@google.com पर संपर्क करें.
SDK टूल के वर्शन 1.6.0 से पहले के वर्शन के लिए (अब सेवा में नहीं है)
Kotlin
client.isServiceAvailable.addOnCompleteListener { task ->
if (task.isSuccessful) {
// Handle IPC call success
if(task.result) {
// Service is available on the device, proceed with content publish
// calls.
} else {
// Service is not available, no further action is needed.
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
}
Java
client.isServiceAvailable().addOnCompleteListener(task - > {
if (task.isSuccessful()) {
// Handle success
if(task.getResult()) {
// Service is available on the device, proceed with content publish
// calls.
} else {
// Service is not available, no further action is needed.
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
});
publishRecommendationClusters
इस एपीआई का इस्तेमाल, RecommendationCluster ऑब्जेक्ट की सूची पब्लिश करने के लिए किया जाता है.
Kotlin
client.publishRecommendationClusters(
PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Trending music")
.build())
.build())
Java
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
new RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Trending music")
.build())
.build());
जब सेवा को अनुरोध मिलता है, तो एक लेन-देन में ये कार्रवाइयां होती हैं:
- डेवलपर पार्टनर से मिला मौजूदा
RecommendationClusterडेटा हटा दिया जाता है. - अनुरोध से मिले डेटा को पार्स करके, अपडेट किए गए 'सुझाव वाले क्लस्टर' में सेव किया जाता है.
गड़बड़ी होने पर, पूरे अनुरोध को अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहती है.
publishFeaturedCluster
इस एपीआई का इस्तेमाल, FeaturedCluster ऑब्जेक्ट की सूची पब्लिश करने के लिए किया जाता है.
Kotlin
client.publishFeaturedCluster(
PublishFeaturedClusterRequest.Builder()
.setFeaturedCluster(
FeaturedCluster.Builder()
...
.build())
.build())
Java
client.publishFeaturedCluster(
new PublishFeaturedClusterRequest.Builder()
.setFeaturedCluster(
new FeaturedCluster.Builder()
...
.build())
.build());
जब सेवा को अनुरोध मिलता है, तो एक लेन-देन में ये कार्रवाइयां होती हैं:
- डेवलपर पार्टनर से मिला मौजूदा
FeaturedClusterडेटा हटा दिया जाता है. - अनुरोध से मिले डेटा को पार्स करके, अपडेट किए गए 'चुनिंदा क्लस्टर' में सेव किया जाता है.
गड़बड़ी होने पर, पूरे अनुरोध को अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहती है.
publishContinuationCluster
इस एपीआई का इस्तेमाल, ContinuationCluster ऑब्जेक्ट को पब्लिश करने के लिए किया जाता है.
Kotlin
client.publishContinuationCluster(
PublishContinuationClusterRequest.Builder()
.setContinuationCluster(
ContinuationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.build())
.build())
Java
client.publishContinuationCluster(
PublishContinuationClusterRequest.Builder()
.setContinuationCluster(
ContinuationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.build())
.build())
जब सेवा को अनुरोध मिलता है, तो एक लेन-देन में ये कार्रवाइयां होती हैं:
- डेवलपर पार्टनर से मिला मौजूदा
ContinuationClusterडेटा हटा दिया जाता है. - अनुरोध से मिले डेटा को पार्स करके, अपडेट किए गए 'जारी रखने वाले क्लस्टर' में सेव किया जाता है.
गड़बड़ी होने पर, पूरे अनुरोध को अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहती है.
publishUserAccountManagementRequest
इस एपीआई का इस्तेमाल, साइन इन कार्ड पब्लिश करने के लिए किया जाता है . साइन इन करने की सुविधा से, लोगों को ऐप्लिकेशन के साइन इन पेज पर रीडायरेक्ट किया जाता है. इससे ऐप्लिकेशन, कॉन्टेंट पब्लिश कर सकता है या लोगों की दिलचस्पी के हिसाब से ज़्यादा कॉन्टेंट उपलब्ध करा सकता है
यहां दिया गया मेटाडेटा, 'साइन इन करें' कार्ड का हिस्सा है -
| एट्रिब्यूट | ज़रूरी शर्त | ब्यौरा |
|---|---|---|
| कार्रवाई का यूआरआई | ज़रूरी है | कार्रवाई का डीपलिंक (यानी कि ऐप्लिकेशन के साइन इन पेज पर ले जाता है) |
| इमेज | ज़रूरी नहीं - अगर यह वैल्यू नहीं दी जाती है, तो टाइटल एट्रिब्यूट की वैल्यू देना ज़रूरी है |
कार्ड पर दिखाई गई इमेज 16x9 आसपेक्ट रेशियो (चौड़ाई-ऊंचाई का अनुपात) वाली इमेज, जिनका रिज़ॉल्यूशन 1264x712 हो |
| शीर्षक | ज़रूरी नहीं - अगर यह जानकारी नहीं दी जाती है, तो इमेज देना ज़रूरी है | कार्ड पर मौजूद टाइटल |
| ऐक्शन टेक्स्ट | वैकल्पिक | सीटीए पर दिखने वाला टेक्स्ट (जैसे, साइन इन करें) |
| सबटाइटल | वैकल्पिक | कार्ड पर मौजूद वैकल्पिक सबटाइटल |
Kotlin
var SIGN_IN_CARD_ENTITY =
SignInCardEntity.Builder()
.addPosterImage(
Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(500)
.setImageWidthInPixel(500)
.build())
.setActionText("Sign In")
.setActionUri(Uri.parse("http://xx.com/signin"))
.build()
client.publishUserAccountManagementRequest(
PublishUserAccountManagementRequest.Builder()
.setSignInCardEntity(SIGN_IN_CARD_ENTITY)
.build());
Java
SignInCardEntity SIGN_IN_CARD_ENTITY =
new SignInCardEntity.Builder()
.addPosterImage(
new Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(500)
.setImageWidthInPixel(500)
.build())
.setActionText("Sign In")
.setActionUri(Uri.parse("http://xx.com/signin"))
.build();
client.publishUserAccountManagementRequest(
new PublishUserAccountManagementRequest.Builder()
.setSignInCardEntity(SIGN_IN_CARD_ENTITY)
.build());
जब सेवा को अनुरोध मिलता है, तो एक लेन-देन में ये कार्रवाइयां होती हैं:
- डेवलपर पार्टनर से मिला मौजूदा
UserAccountManagementClusterडेटा हटा दिया जाता है. - अनुरोध से मिले डेटा को पार्स करके, अपडेट किए गए UserAccountManagementCluster क्लस्टर में सेव किया जाता है.
गड़बड़ी होने पर, पूरे अनुरोध को अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहती है.
updatePublishStatus
अगर कारोबार से जुड़ी किसी वजह से, कोई भी क्लस्टर पब्लिश नहीं किया जाता है, तो हमारा सुझाव है कि आप updatePublishStatus एपीआई का इस्तेमाल करके, पब्लिश करने की स्थिति को अपडेट करें. यह इसलिए ज़रूरी है, क्योंकि :
- सभी स्थितियों में स्टेटस देना ज़रूरी है. भले ही, कॉन्टेंट पब्लिश हो गया हो (STATUS == PUBLISHED). ऐसा इसलिए, ताकि डैशबोर्ड में यह साफ़ तौर पर बताया जा सके कि आपका इंटिग्रेशन कैसा काम कर रहा है और उसकी अन्य मेट्रिक क्या हैं.
- अगर कोई कॉन्टेंट पब्लिश नहीं किया गया है, लेकिन इंटिग्रेशन का स्टेटस ठीक है (STATUS == NOT_PUBLISHED), तो Google, ऐप्लिकेशन के परफ़ॉर्मेंस डैशबोर्ड में सूचनाएं ट्रिगर करने से बच सकता है. इससे पुष्टि होती है कि कॉन्टेंट को पब्लिश नहीं किया गया है, क्योंकि सेवा देने वाली कंपनी के हिसाब से अनुमानित स्थिति है.
- इससे डेवलपर को यह जानकारी मिलती है कि डेटा कब पब्लिश किया गया और कब नहीं.
- Google, स्टेटस कोड का इस्तेमाल करके उपयोगकर्ता को ऐप्लिकेशन में कुछ कार्रवाइयां करने के लिए सूचना दे सकता है. इससे उपयोगकर्ता को ऐप्लिकेशन का कॉन्टेंट दिखेगा या वह समस्या को हल कर पाएगा.
पब्लिश करने की मंज़ूरी वाले स्टेटस कोड की सूची यहां दी गई है :
// Content is published
AppEngagePublishStatusCode.PUBLISHED,
// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,
// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,
// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,
// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,
// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,
// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,
// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,
// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER
अगर किसी उपयोगकर्ता के लॉग इन न करने की वजह से कॉन्टेंट पब्लिश नहीं किया जाता है, तो Google, साइन इन कार्ड पब्लिश करने का सुझाव देगा. अगर किसी वजह से सेवा देने वाली कंपनियां, साइन इन कार्ड पब्लिश नहीं कर पा रही हैं, तो हमारा सुझाव है कि वे updatePublishStatus API को कॉल करें. इसके लिए, स्टेटस कोड NOT_PUBLISHED_REQUIRES_SIGN_IN का इस्तेमाल करें
Kotlin
client.updatePublishStatus(
PublishStatusRequest.Builder()
.setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
.build())
Java
client.updatePublishStatus(
new PublishStatusRequest.Builder()
.setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
.build());
deleteRecommendationClusters
इस एपीआई का इस्तेमाल, सुझाव वाले क्लस्टर का कॉन्टेंट मिटाने के लिए किया जाता है.
Kotlin
client.deleteRecommendationClusters()
Java
client.deleteRecommendationClusters();
अनुरोध मिलने पर, सेवा मौजूदा डेटा को सुझाव क्लस्टर से हटा देती है. गड़बड़ी होने पर, पूरे अनुरोध को अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहती है.
deleteFeaturedCluster
इस एपीआई का इस्तेमाल, 'चुनिंदा क्लस्टर' का कॉन्टेंट मिटाने के लिए किया जाता है.
Kotlin
client.deleteFeaturedCluster()
Java
client.deleteFeaturedCluster();
अनुरोध मिलने पर, सेवा मौजूदा डेटा को फ़ीचर्ड क्लस्टर से हटा देती है. गड़बड़ी होने पर, पूरे अनुरोध को अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहती है.
deleteContinuationCluster
इस एपीआई का इस्तेमाल, 'जारी रखने वाले क्लस्टर' का कॉन्टेंट मिटाने के लिए किया जाता है.
Kotlin
client.deleteContinuationCluster()
Java
client.deleteContinuationCluster();
अनुरोध मिलने पर, सेवा मौजूदा डेटा को Continuation Cluster से हटा देती है. गड़बड़ी होने पर, पूरे अनुरोध को अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहती है.
deleteUserManagementCluster
इस एपीआई का इस्तेमाल, UserAccountManagement क्लस्टर का कॉन्टेंट मिटाने के लिए किया जाता है.
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
अनुरोध मिलने पर, यह सेवा UserAccountManagement क्लस्टर से मौजूदा डेटा हटा देती है. गड़बड़ी होने पर, पूरे अनुरोध को अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहती है.
deleteClusters
इस एपीआई का इस्तेमाल, किसी क्लस्टर टाइप का कॉन्टेंट मिटाने के लिए किया जाता है.
Kotlin
client.deleteClusters(
DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
...
.build())
Java
client.deleteClusters(
new DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
...
.build());
अनुरोध मिलने पर, सेवा उन सभी क्लस्टर से मौजूदा डेटा हटा देती है जो बताए गए क्लस्टर टाइप से मेल खाते हैं. क्लाइंट, एक या एक से ज़्यादा क्लस्टर टाइप पास कर सकते हैं. गड़बड़ी होने पर, पूरे अनुरोध को अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहती है.
गड़बड़ी ठीक करना
हमारा सुझाव है कि पब्लिश करने वाले एपीआई से टास्क के नतीजे सुनें, ताकि टास्क पूरा न होने पर उसे ठीक किया जा सके और फिर से सबमिट किया जा सके.
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(...)
.build())
.addOnCompleteListener(
task -> {
if (task.isSuccessful()) {
// do something
} else {
Exception exception = task.getException();
if (exception instanceof AppEngageException) {
@AppEngageErrorCode
int errorCode = ((AppEngageException) exception).getErrorCode();
if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
// do something
}
}
}
});
गड़बड़ी को AppEngageException के तौर पर दिखाया जाता है. साथ ही, गड़बड़ी की वजह को गड़बड़ी कोड के तौर पर दिखाया जाता है.
| गड़बड़ी का कोड | गड़बड़ी का नाम | ध्यान दें |
|---|---|---|
1 |
SERVICE_NOT_FOUND |
यह सेवा, दिए गए डिवाइस पर उपलब्ध नहीं है. |
2 |
SERVICE_NOT_AVAILABLE |
यह सेवा दिए गए डिवाइस पर उपलब्ध है, लेकिन कॉल के समय यह उपलब्ध नहीं है. उदाहरण के लिए, इसे साफ़ तौर पर बंद कर दिया गया है. |
3 |
SERVICE_CALL_EXECUTION_FAILURE |
थ्रेडिंग से जुड़ी समस्याओं की वजह से, टास्क पूरा नहीं हो सका. इस मामले में, फिर से कोशिश की जा सकती है. |
4 |
SERVICE_CALL_PERMISSION_DENIED |
कॉलर को सेवा से जुड़ा कॉल करने की अनुमति नहीं है. |
5 |
SERVICE_CALL_INVALID_ARGUMENT |
अनुरोध में अमान्य डेटा शामिल है. उदाहरण के लिए, क्लस्टर की तय सीमा से ज़्यादा संख्या. |
6 |
SERVICE_CALL_INTERNAL |
सेवा से जुड़ी कोई गड़बड़ी हुई है. |
7 |
SERVICE_CALL_RESOURCE_EXHAUSTED |
सेवा के लिए बार-बार कॉल किया जा रहा है. |
तीसरा चरण: ब्रॉडकास्ट इंटेंट मैनेज करना
कॉन्टेंट पब्लिश करने के लिए, नौकरी के ज़रिए एपीआई कॉल करने के साथ-साथ, BroadcastReceiver सेट अप करना भी ज़रूरी है, ताकि कॉन्टेंट पब्लिश करने का अनुरोध मिल सके.
ब्रॉडकास्ट इंटेंट का मुख्य मकसद, ऐप्लिकेशन को फिर से चालू करना और डेटा को सिंक करना है. ब्रॉडकास्ट इंटेंट को बार-बार भेजने के लिए डिज़ाइन नहीं किया गया है. यह सिर्फ़ तब ट्रिगर होता है, जब Engage Service को लगता है कि कॉन्टेंट पुराना हो सकता है. उदाहरण के लिए, एक हफ़्ते पुराना. इससे, उपयोगकर्ता को नया कॉन्टेंट मिलने की संभावना बढ़ जाती है. भले ही, ऐप्लिकेशन को लंबे समय तक इस्तेमाल न किया गया हो.
BroadcastReceiver को इन दो तरीकों से सेट अप किया जाना चाहिए:
Context.registerReceiver()का इस्तेमाल करके,BroadcastReceiverक्लास के इंस्टेंस को डाइनैमिक तौर पर रजिस्टर करें. इससे उन ऐप्लिकेशन से कम्यूनिकेशन किया जा सकता है जो अब भी मेमोरी में लाइव हैं.
Kotlin
class AppEngageBroadcastReceiver : BroadcastReceiver(){
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received
// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
// Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
// received
}
fun registerBroadcastReceivers(context: Context){
var context = context
context = context.applicationContext
// Register Recommendation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Featured Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_FEATURED),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Continuation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
}
Java
class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received
// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
// Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
// received
}
public static void registerBroadcastReceivers(Context context) {
context = context.getApplicationContext();
// Register Recommendation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
// Register Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
}
अपनी
AndroidManifest.xmlफ़ाइल में,<receiver>टैग का इस्तेमाल करके स्टैटिक तौर पर लागू करने का एलान करें. इससे ऐप्लिकेशन को ब्रॉडकास्ट इंटेंट मिलते हैं, भले ही वह चल न रहा हो. साथ ही, इससे ऐप्लिकेशन को कॉन्टेंट पब्लिश करने की अनुमति भी मिलती है.
<application>
<receiver
android:name=".AppEngageBroadcastReceiver"
android:permission="com.google.android.engage.REQUEST_ENGAGE_DATA"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
</intent-filter>
</receiver>
</application>
सेवा इन इंटेंट को भेजेगी:
com.google.android.engage.action.PUBLISH_RECOMMENDATIONइस इंटेंट को पाने पर,publishRecommendationClustersकॉल शुरू करने का सुझाव दिया जाता है.com.google.android.engage.action.PUBLISH_FEATUREDइस इंटेंट को पाने पर,publishFeaturedClusterकॉल शुरू करने का सुझाव दिया जाता है.com.google.android.engage.action.PUBLISH_CONTINUATIONइस इंटेंट को पाने पर,publishContinuationClusterकॉल शुरू करने का सुझाव दिया जाता है.
इंटिग्रेशन वर्कफ़्लो
इंटिग्रेशन पूरा होने के बाद, उसकी पुष्टि करने के बारे में सिलसिलेवार जानकारी के लिए, Engage डेवलपर इंटिग्रेशन वर्कफ़्लो देखें.
अक्सर पूछे जाने वाले सवाल
अक्सर पूछे जाने वाले सवालों के लिए, Engage SDK के बारे में अक्सर पूछे जाने वाले सवाल देखें.
संपर्क
अगर इंटिग्रेशन की प्रोसेस के दौरान आपका कोई सवाल है, तो engage-developers@google.com से संपर्क करें. हमारी टीम जल्द से जल्द जवाब देगी.
अगले चरण
इस इंटिग्रेशन को पूरा करने के बाद, आपको ये काम करने होंगे:
engage-developers@google.comको एक ईमेल भेजें. साथ ही, इंटिग्रेट किया गया वह APK अटैच करें जिसे Google को टेस्ट करना है.- Google, पुष्टि करने और समीक्षा करने की प्रोसेस को अंदरूनी तौर पर पूरा करेगा. इससे यह पक्का किया जा सकेगा कि इंटिग्रेशन उम्मीद के मुताबिक काम कर रहा है. अगर बदलाव करने की ज़रूरत होगी, तो Google आपसे संपर्क करेगा और ज़रूरी जानकारी देगा.
- जब टेस्टिंग पूरी हो जाएगी और कोई बदलाव करने की ज़रूरत नहीं होगी, तब Google आपसे संपर्क करेगा. इसमें आपको यह सूचना दी जाएगी कि अब Play Store पर अपडेट किया गया और इंटिग्रेट किया गया APK पब्लिश किया जा सकता है.
- Google से यह पुष्टि होने के बाद कि आपका अपडेट किया गया APK, Play Store पर पब्लिश कर दिया गया है, आपके सुझाव, चुनिंदा, और जारी रखें क्लस्टर पब्लिश कर दिए जाएंगे. ये उपयोगकर्ताओं को दिखेंगे.