एंगेजमेंट लिसनिंग: तीसरे पक्ष के तकनीकी इंटिग्रेशन के निर्देश

अपने उपयोगकर्ताओं तक पहुंचकर, ऐप्लिकेशन में यूज़र ऐक्टिविटी बढ़ाएं. Engage SDK टूल को इंटिग्रेट करें, ताकि लोगों को उनकी दिलचस्पी के मुताबिक सुझाव और 'देखना जारी रखें' कॉन्टेंट सीधे उपयोगकर्ता के डिवाइस पर अलग-अलग प्लैटफ़ॉर्म पर दिखे. इनमें कलेक्शन, टीवी, फ़िल्में वगैरह एक ही जगह पर देखने की सुविधा, और Play Store शामिल हैं. इंटिग्रेशन की वजह से, औसत APK में 50 केबी (कंप्रेस किया गया) से कम का डेटा जुड़ता है. साथ ही, ज़्यादातर ऐप्लिकेशन के लिए डेवलपर को एक हफ़्ते का समय लगता है. ज़्यादा जानने के लिए, हमारी कारोबार की साइट पर जाएं.

इस गाइड में, डेवलपर पार्टनर के लिए निर्देश दिए गए हैं. इनकी मदद से, वे Engage की कॉन्टेंट वाली सतहों पर ऑडियो कॉन्टेंट (संगीत, पॉडकास्ट, ऑडियो बुक, लाइव रेडियो) डिलीवर कर सकते हैं.

कैटगरी और प्लैटफ़ॉर्म के बारे में जानकारी

Engage SDK की सुविधा के लिए, आपके ऐप्लिकेशन की कॉन्टेंट कैटगरी के आधार पर यह तय किया जाता है कि आपका ऐप्लिकेशन इस सुविधा का इस्तेमाल कर सकता है या नहीं. यहां दी गई टेबल का इस्तेमाल करके, यह पता लगाएं कि आपको किन प्लैटफ़ॉर्म पर वीडियो अपलोड करने की अनुमति है:

स्थिति कॉन्टेंट की कैटगरी या इस्तेमाल का उदाहरण इन प्लैटफ़ॉर्म पर काम करती हैं
उपलब्ध है
(सभी प्लैटफ़ॉर्म पर इस्तेमाल किया जा सकता है)
  • संगीत चलाने वाले ऐप्लिकेशन
  • ऑडियो बुक
  • पॉडकास्ट
  • लाइव रेडियो
  • संग्रह
  • Entertainment Space
  • Play Store ऐप्लिकेशन टैब
  • Play Store का 'आप' टैब
  • Play Store का स्टोर पेज
कुछ हद तक काम करती है
(कुछ प्लैटफ़ॉर्म पर उपलब्ध है)
  • लाइव ऑडियो स्ट्रीम
  • संग्रह
  • Entertainment Space
काम नहीं करता है
  • MP3 प्लेयर / लाइब्रेरी
  • म्यूज़िक मेकर
  • ऑडियो रिकॉर्डर / कन्वर्टर / टूल
  • संगीत पहचानने वाले ऐप्लिकेशन
  • संगीत की शिक्षा (शिक्षा के लिए उपलब्ध)

इंटिग्रेशन की जानकारी

शब्दावली

इस इंटिग्रेशन में, तीन तरह के क्लस्टर शामिल होते हैं: सुझाव, जारी रखें, और चुनिंदा.

  • सुझाव के क्लस्टर, किसी एक डेवलपर पार्टनर के कॉन्टेंट में से आपकी दिलचस्पी के हिसाब से सुझाव दिखाते हैं.

    आपको इस तरह के सुझाव दिखेंगे:

    • सुझाव के क्लस्टर: एक यूज़र इंटरफ़ेस (यूआई) दिखता है. इसमें एक ही डेवलपर पार्टनर के कॉन्टेंट में सुझाव दिखाए जाते हैं.

      पहली इमेज. यह टीवी, फ़िल्में वगैरह एक ही जगह पर देखने की सुविधा का यूज़र इंटरफ़ेस है. इसमें किसी एक पार्टनर के कॉन्टेंट में से सुझाव दिखाए जा रहे हैं.
    • इकाई: इसमें एक कॉन्टेंट दिखता है. कोई इकाई, प्लेलिस्ट, ऑडियो बुक, पॉडकास्ट वगैरह हो सकती है. इकाई के काम करने वाले टाइप की सूची देखने के लिए, इकाई का डेटा दें सेक्शन देखें.

      दूसरी इमेज. यह टीवी, फ़िल्में वगैरह एक ही जगह पर देखने की सुविधा का यूज़र इंटरफ़ेस (यूआई) है. इसमें किसी एक पार्टनर के सुझाव वाले क्लस्टर में एक इकाई दिख रही है.
  • जारी रखने वाला क्लस्टर, एक ही यूज़र इंटरफ़ेस (यूआई) ग्रुपिंग में, कई डेवलपर पार्टनर के ऐसे ऑडियो कॉन्टेंट को दिखाता है जिसमें उपयोगकर्ताओं ने हाल ही में दिलचस्पी दिखाई है. हर डेवलपर पार्टनर को, जारी रखने वाले क्लस्टर में ज़्यादा से ज़्यादा 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

पहला चरण: इकाई का डेटा उपलब्ध कराना

एसडीके ने हर आइटम टाइप को दिखाने के लिए अलग-अलग इकाइयां तय की हैं. हम 'सुनें' कैटगरी के लिए, इन इकाइयों का इस्तेमाल कर सकते हैं:

  1. MusicAlbumEntity
  2. MusicArtistEntity
  3. MusicTrackEntity
  4. MusicVideoEntity
  5. PlaylistEntity
  6. PodcastSeriesEntity
  7. PodcastEpisodeEntity
  8. LiveRadioStationEntity
  9. AudiobookEntity

यहाँ दिए गए चार्ट में, हर टाइप के लिए उपलब्ध एट्रिब्यूट और ज़रूरी शर्तों के बारे में बताया गया है.

MusicAlbumEntity

MusicAlbumEntity ऑब्जेक्ट, किसी संगीत एल्बम को दिखाता है. उदाहरण के लिए, टेलर स्विफ़्ट का Midnights.

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

संगीत एल्बम की जानकारी के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

कलाकार ज़रूरी है संगीत एल्बम में शामिल कलाकारों की सूची.
प्लेबैक यूआरआई वैकल्पिक

ऐसा डीप लिंक जो सेवा देने वाली कंपनी के ऐप्लिकेशन में एल्बम को चलाना शुरू कर देता है.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

ब्यौरा वैकल्पिक अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए.
गानों की संख्या वैकल्पिक म्यूज़िक एल्बम में गानों की संख्या.
शैलियां वैकल्पिक संगीत एल्बम में मौजूद शैलियों की सूची.
एल्बम का फ़ॉर्मैट वैकल्पिक

एल्बम (इसमें एलपी और डबल एलपी शामिल हैं)

ईपी

SINGLE

Mixtape

संगीत लेबल वैकल्पिक एल्बम से जुड़े संगीत लेबल की सूची.
डिवाइस पर डाउनलोड किया गया वैकल्पिक बूलियन से पता चलता है कि संगीत एल्बम को डिवाइस पर डाउनलोड किया गया है या नहीं.
अश्लील कॉन्टेंट वैकल्पिक

यह बूलियन वैल्यू बताती है कि कॉन्टेंट अश्लील है या नहीं

ऐसे आइटम के लिए TRUE वैल्यू सेट करें जिनमें आपत्तिजनक कॉन्टेंट मौजूद हो या जिन पर माता-पिता के लिए चेतावनी दी गई हो. एडल्ट कॉन्टेंट वाले आइटम, "E" टैग के साथ दिखते हैं.

रिलीज़ की तारीख वैकल्पिक एलबम के रिलीज़ होने की तारीख, epoch मिलीसेकंड में.
कुल समय वैकल्पिक मिलीसेकंड में एल्बम की अवधि.
पिछली बार जुड़ाव का समय वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है.

Epoch के बाद के मिलीसेकंड

प्रोग्रेस का प्रतिशत वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है.

0 से 100 के बीच का पूर्णांक

MusicArtistEntity

MusicArtistEntity ऑब्जेक्ट, किसी संगीत कलाकार (उदाहरण के लिए, Adele) के बारे में जानकारी देता है.

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

संगीत कलाकार के बारे में जानकारी देने के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

प्लेबैक यूआरआई वैकल्पिक

यह डीप लिंक, सेवा देने वाली कंपनी के ऐप्लिकेशन में कलाकार के गाने चलाना शुरू करता है.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

ब्यौरा वैकल्पिक अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए.
पिछली बार जुड़ाव का समय वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है.

Epoch के बाद के मिलीसेकंड

MusicTrackEntity

MusicTrackEntity ऑब्जेक्ट, किसी म्यूज़िक ट्रैक को दिखाता है. उदाहरण के लिए, Coldplay का Yellow.

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

ऐसा डीप लिंक जो सेवा देने वाली कंपनी के ऐप्लिकेशन में संगीत ट्रैक चलाना शुरू करता है.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

कलाकार ज़रूरी है संगीत ट्रैक के लिए कलाकारों की सूची.
जानकारी वाले पेज का यूआरआई वैकल्पिक

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

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

ब्यौरा वैकल्पिक अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए.
कुल समय वैकल्पिक ट्रैक की अवधि, मिलीसेकंड में.
एल्बम वैकल्पिक उस एल्बम का नाम जिससे गाना जुड़ा है.
डिवाइस पर डाउनलोड किया गया वैकल्पिक बूलियन से पता चलता है कि संगीत ट्रैक को डिवाइस पर डाउनलोड किया गया है या नहीं.
अश्लील कॉन्टेंट वैकल्पिक

यह बूलियन वैल्यू बताती है कि कॉन्टेंट अश्लील है या नहीं

ऐसे आइटम के लिए TRUE वैल्यू सेट करें जिनमें आपत्तिजनक कॉन्टेंट मौजूद हो या जिन पर माता-पिता के लिए चेतावनी दी गई हो. एडल्ट कॉन्टेंट वाले आइटम, "E" टैग के साथ दिखते हैं.

पिछली बार जुड़ाव का समय वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है.

Epoch के बाद के मिलीसेकंड

प्रोग्रेस का प्रतिशत वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है.

0 से 100 के बीच का पूर्णांक

MusicVideoEntity

MusicVideoEntity ऑब्जेक्ट, किसी म्यूज़िक वीडियो को दिखाता है. उदाहरण के लिए, The Weeknd - Take My Breath (आधिकारिक संगीत वीडियो).

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

ऐसा डीप लिंक जो सेवा देने वाली कंपनी के ऐप्लिकेशन में म्यूज़िक वीडियो चलाना शुरू करता है.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

जानकारी वाले पेज का यूआरआई वैकल्पिक

म्यूज़िक वीडियो की जानकारी के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

कुल समय वैकल्पिक वीडियो की अवधि, मिलीसेकंड में.
व्यू की संख्या वैकल्पिक फ़्री टेक्स्ट फ़ॉर्मैट में वीडियो पर मिले व्यू की संख्या.
कलाकार वैकल्पिक म्यूज़िक वीडियो में शामिल कलाकारों की सूची.
कॉन्टेंट रेटिंग वैकल्पिक ट्रैक की कॉन्टेंट रेटिंग की सूची.
ब्यौरा वैकल्पिक अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए.
डिवाइस पर डाउनलोड किया गया वैकल्पिक बूलियन से पता चलता है कि डिवाइस पर म्यूज़िक वीडियो डाउनलोड किया गया है या नहीं.
अश्लील कॉन्टेंट वैकल्पिक

यह बूलियन वैल्यू बताती है कि कॉन्टेंट अश्लील है या नहीं

ऐसे आइटम के लिए TRUE वैल्यू सेट करें जिनमें आपत्तिजनक कॉन्टेंट मौजूद हो या जिन पर माता-पिता के लिए चेतावनी दी गई हो. एडल्ट कॉन्टेंट वाले आइटम, "E" टैग के साथ दिखते हैं.

पिछली बार जुड़ाव का समय वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है.

Epoch के बाद के मिलीसेकंड

प्रोग्रेस का प्रतिशत वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है.

0 से 100 के बीच का पूर्णांक

PlaylistEntity

PlaylistEntity ऑब्जेक्ट, संगीत की प्लेलिस्ट को दिखाता है. उदाहरण के लिए, अमेरिका की टॉप 10 प्लेलिस्ट.

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

यह एक डीप लिंक है. इससे सेवा देने वाली कंपनी के ऐप्लिकेशन में संगीत की प्लेलिस्ट चलना शुरू हो जाती है.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

जानकारी वाले पेज का यूआरआई वैकल्पिक

संगीत की प्लेलिस्ट के बारे में जानकारी देने के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

कुल समय वैकल्पिक प्लेलिस्ट की अवधि, मिलीसेकंड में.
गानों की संख्या वैकल्पिक संगीत प्लेलिस्ट में गानों की संख्या.
ब्यौरा वैकल्पिक अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए.
डिवाइस पर डाउनलोड किया गया वैकल्पिक बूलियन से पता चलता है कि प्लेलिस्ट को डिवाइस पर डाउनलोड किया गया है या नहीं.
अश्लील कॉन्टेंट वैकल्पिक

यह बूलियन वैल्यू बताती है कि कॉन्टेंट अश्लील है या नहीं

ऐसे आइटम के लिए TRUE वैल्यू सेट करें जिनमें आपत्तिजनक कॉन्टेंट मौजूद हो या जिन पर माता-पिता के लिए चेतावनी दी गई हो. एडल्ट कॉन्टेंट वाले आइटम, "E" टैग के साथ दिखते हैं.

पिछली बार जुड़ाव का समय वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है.

Epoch के बाद के मिलीसेकंड

प्रोग्रेस का प्रतिशत वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है.

0 से 100 के बीच का पूर्णांक

PodcastSeriesEntity

PodcastSeriesEntity ऑब्जेक्ट, पॉडकास्ट सीरीज़ के बारे में जानकारी देता है. उदाहरण के लिए, This American Life.

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

पॉडकास्ट सीरीज़ के बारे में जानकारी देने के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

प्लेबैक यूआरआई वैकल्पिक

ऐसा डीप लिंक जो सेवा देने वाली कंपनी के ऐप्लिकेशन में पॉडकास्ट सीरीज़ को चलाना शुरू करता है.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

एपिसोड की संख्या वैकल्पिक पॉडकास्ट सीरीज़ में एपिसोड की संख्या.
प्रोडक्शन का नाम वैकल्पिक पॉडकास्ट सीरीज़ के प्रोडक्शन का नाम.
होस्ट वैकल्पिक पॉडकास्ट सीरीज़ के होस्ट की सूची.
शैलियां वैकल्पिक पॉडकास्ट सीरीज़ की शैलियों की सूची.
डिवाइस पर डाउनलोड किया गया वैकल्पिक बूलियन से पता चलता है कि पॉडकास्ट को डिवाइस पर डाउनलोड किया गया है या नहीं.
ब्यौरा वैकल्पिक अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए.
अश्लील कॉन्टेंट वैकल्पिक

यह बूलियन वैल्यू बताती है कि कॉन्टेंट अश्लील है या नहीं

ऐसे आइटम के लिए TRUE वैल्यू सेट करें जिनमें आपत्तिजनक कॉन्टेंट मौजूद हो या जिन पर माता-पिता के लिए चेतावनी दी गई हो. एडल्ट कॉन्टेंट वाले आइटम, "E" टैग के साथ दिखते हैं.

पिछली बार जुड़ाव का समय वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है.

Epoch के बाद के मिलीसेकंड

PodcastEpisodeEntity

PodcastEpisodeEntity ऑब्जेक्ट, पॉडकास्ट सीरीज़ को दिखाता है. उदाहरण के लिए, स्पार्क बर्ड, एपिसोड 754: दिस अमेरिकन लाइफ़.

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

यह एक डीप लिंक है. इससे सेवा देने वाली कंपनी के ऐप्लिकेशन में पॉडकास्ट का एपिसोड चलना शुरू हो जाता है.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

पॉडकास्ट सीरीज़ का टाइटल ज़रूरी है यह उस पॉडकास्ट सीरीज़ का नाम है जिससे एपिसोड जुड़ा है.
कुल समय ज़रूरी है पॉडकास्ट के एपिसोड की अवधि, मिलीसेकंड में.
प्रकाशन तारीख ज़रूरी है पॉडकास्ट पब्लिश करने की तारीख (epoch मिलीसेकंड में)
जानकारी वाले पेज का यूआरआई वैकल्पिक

पॉडकास्ट एपिसोड की जानकारी के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

प्रोडक्शन का नाम वैकल्पिक पॉडकास्ट सीरीज़ के प्रोडक्शन का नाम.
एपिसोड इंडेक्स वैकल्पिक सीरीज़ में एपिसोड का इंडेक्स. पहला इंडेक्स 1 होता है.
होस्ट वैकल्पिक पॉडकास्ट के एपिसोड के होस्ट की सूची.
शैलियां वैकल्पिक पॉडकास्ट के एपिसोड की शैलियों की सूची.
डिवाइस पर डाउनलोड किया गया वैकल्पिक बूलियन से पता चलता है कि पॉडकास्ट का एपिसोड डिवाइस पर डाउनलोड किया गया है या नहीं.
ब्यौरा वैकल्पिक अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए.
वीडियो पॉडकास्‍ट वैकल्पिक बूलियन वैल्यू से पता चलता है कि पॉडकास्ट के एपिसोड में वीडियो कॉन्टेंट है या नहीं
अश्लील कॉन्टेंट वैकल्पिक

यह बूलियन वैल्यू बताती है कि कॉन्टेंट अश्लील है या नहीं

ऐसे आइटम के लिए TRUE वैल्यू सेट करें जिनमें आपत्तिजनक कॉन्टेंट मौजूद हो या जिन पर माता-पिता के लिए चेतावनी दी गई हो. एडल्ट कॉन्टेंट वाले आइटम, "E" टैग के साथ दिखते हैं.

'अगला गाना' सुविधा का टाइप वैकल्पिक

'जारी रखने वाले क्लस्टर' में मौजूद आइटम के लिए सुझाया गया

TYPE_CONTINUE - अधूरे ऑडियो आइटम को फिर से शुरू करें.

TYPE_NEXT - किसी सीरीज़ के नए एपिसोड पर जारी रखें.

TYPE_NEW - हाल ही में रिलीज़ हुआ.

पिछली बार जुड़ाव का समय वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है.

Epoch के बाद के मिलीसेकंड

प्रोग्रेस का प्रतिशत वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है.

0 से 100 के बीच का पूर्णांक

LiveRadioStationEntity

LiveRadioStationEntity ऑब्जेक्ट, लाइव रेडियो स्टेशन को दिखाता है. उदाहरण के लिए, 98.1 The Breeze.

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

ऐसा डीप लिंक जो सेवा देने वाली कंपनी के ऐप्लिकेशन में रेडियो स्टेशन को चलाना शुरू कर देता है.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

जानकारी वाले पेज का यूआरआई वैकल्पिक

रेडियो स्टेशन के बारे में जानकारी देने के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

आवृत्ति वैकल्पिक रेडियो स्टेशन की ब्रॉडकास्ट फ़्रीक्वेंसी (उदाहरण के लिए, "98.1 FM").
शीर्षक दिखाएं वैकल्पिक रेडियो स्टेशन पर फ़िलहाल चल रहा शो.
होस्ट वैकल्पिक रेडियो स्टेशन के होस्ट की सूची.
ब्यौरा वैकल्पिक अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए.
पिछली बार जुड़ाव का समय वैकल्पिक

जारी रखने वाले क्लस्टर में मौजूद आइटम के लिए, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव दिया जाता है. इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है.

Epoch के बाद के मिलीसेकंड

AudiobookEntity

AudiobookEntity ऑब्जेक्ट, ऑडियो बुक के बारे में बताता है. उदाहरण के लिए, मिशेल ओबामा की ऑडियो बुक Becoming.

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

ऑडियो बुक के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक.

ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें

Narrator वैकल्पिक कम से कम एक नरेटर का नाम देना ज़रूरी है.
पब्लिश होने की तारीख वैकल्पिक अगर दिया गया है, तो एपक मिलीसेकंड में.
ब्यौरा वैकल्पिक अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए.
कीमत वैकल्पिक फ़्री टेक्स्ट
कुल समय वैकल्पिक अगर यह वैल्यू दी गई है, तो यह पॉज़िटिव होनी चाहिए.
शैली वैकल्पिक किताब से जुड़ी शैलियों की सूची.
सीरीज़ का नाम वैकल्पिक ऑडियो बुक जिस सीरीज़ का हिस्सा है उसका नाम. उदाहरण के लिए, हैरी पॉटर.
सीरीज़ यूनिट इंडेक्स वैकल्पिक सीरीज़ में ऑडियो बुक का इंडेक्स. इसमें 1 का मतलब है कि यह सीरीज़ की पहली ऑडियो बुक है. उदाहरण के लिए, अगर हैरी पॉटर ऐंड द प्रिज़नर ऑफ़ अज़्काबान सीरीज़ की तीसरी किताब है, तो इसे 3 पर सेट किया जाना चाहिए.
किताब का टाइप जारी रखें वैकल्पिक

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, क्लस्टर पब्लिश करने के लिए ज़िम्मेदार है. क्लाइंट में ये एपीआई उपलब्ध हैं:

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishContinuationCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteContinuationCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

इस एपीआई का इस्तेमाल यह देखने के लिए किया जाता है कि सेवा, इंटिग्रेशन के लिए उपलब्ध है या नहीं. साथ ही, यह भी देखा जाता है कि कॉन्टेंट को डिवाइस पर दिखाया जा सकता है या नहीं.

आपको जिस क्लस्टर टाइप को पब्लिश करना है उसके लिए, सेवा की उपलब्धता देखी जा सकती है. 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 टूल के v1.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 एपीआई को कॉल करें. इसके लिए, स्टेटस कोड 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 पर पब्लिश कर दिया गया है, आपके सुझाव, चुनिंदा, और जारी रखें क्लस्टर पब्लिश कर दिए जाएंगे. साथ ही, ये उपयोगकर्ताओं को दिखने लगेंगे.