Engage SDK Watch: तीसरे पक्ष के तकनीकी इंटिग्रेशन के निर्देश

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

इस गाइड में, डेवलपर पार्टनर के लिए निर्देश दिए गए हैं. इनमें बताया गया है कि Engage SDK का इस्तेमाल करके, वीडियो वाले कॉन्टेंट को कैसे इंटिग्रेट किया जा सकता है. इससे, इस नए प्लैटफ़ॉर्म और Google के मौजूदा प्लैटफ़ॉर्म, दोनों पर कॉन्टेंट दिखाया जा सकता है.

कैटगरी के लिए सहायता और प्लैटफ़ॉर्म

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

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

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

इस सेक्शन में, वीडियो वाले कॉन्टेंट के लिए Engage SDK टूल के साथ इंटिग्रेट करने के लिए ज़रूरी चरणों, डेटा मॉडल, और शब्दावली के बारे में बताया गया है.

शब्दावली

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

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

    आपके सुझावों का स्ट्रक्चर इस तरह का होता है:

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

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

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

ज़्यादा जानकारी के लिए, Android 11 में पैकेज की जानकारी देखना लेख पढ़ें.

खास जानकारी

यह डिज़ाइन, सीमित सेवा को लागू करने पर आधारित है.

कोई क्लाइंट, अलग-अलग क्लस्टर टाइप के लिए, इस सीमा तक डेटा पब्लिश कर सकता है:

क्लस्टर का टाइप क्लस्टर की सीमाएं किसी क्लस्टर में इकाइयों की ज़्यादा से ज़्यादा संख्या
सुझाव वाले क्लस्टर ज़्यादा से ज़्यादा सात ज़्यादा से ज़्यादा 50
जारी रखने वाला क्लस्टर ज़्यादा से ज़्यादा 1 ज़्यादा से ज़्यादा 20
चुनिंदा क्लस्टर ज़्यादा से ज़्यादा 1 ज़्यादा से ज़्यादा 20

पहला चरण: Media Home SDK टूल के मौजूदा इंटिग्रेशन से माइग्रेट करना

इस सेक्शन में, Media Home SDK टूल के मौजूदा डेटा मॉडल और एपीआई कॉल को Engage SDK टूल पर माइग्रेट करने का तरीका बताया गया है.

मौजूदा इंटिग्रेशन से डेटा मॉडल मैप करना

अगर आपको Media Home के मौजूदा इंटिग्रेशन से माइग्रेट करना है, तो यहां दी गई टेबल में बताया गया है कि मौजूदा SDK टूल में मौजूद डेटा मॉडल को नए Engage SDK टूल पर कैसे मैप किया जा सकता है:

MediaHomeVideoContract इंटिग्रेशन के बराबर Engage SDK टूल के इंटिग्रेशन के बराबर
com.google.android.mediahome.video.PreviewChannel com.google.android.engage.common.datamodel.RecommendationCluster
com.google.android.mediahome.video.PreviewChannel.Builder com.google.android.engage.common.datamodel.RecommendationCluster.Builder
com.google.android.mediahome.video.PreviewChannelHelper com.google.android.engage.video.service.AppEngageVideoClient
com.google.android.mediahome.video.PreviewProgram इन्हें अलग-अलग क्लास में बांटा गया है: EventVideo, LiveStreamingVideo, Movie, TvEpisode, TvSeason, TvShow, VideoClipEntity
com.google.android.mediahome.video.PreviewProgram.Builder अलग-अलग क्लास में बिल्डर में बांटा गया: EventVideo, LiveStreamingVideo, Movie, TvEpisode, TvSeason, TvShow, VideoClipEntity
com.google.android.mediahome.video.VideoContract अब इसकी ज़रूरत नहीं है.
com.google.android.mediahome.video.WatchNextProgram अलग-अलग क्लास में एट्रिब्यूट के हिसाब से बांटा गया है: EventVideoEntity, LiveStreamingVideoEntity, MovieEntity, TvEpisodeEntity, TvSeasonEntity, TvShowEntity, VideoClipEntity
com.google.android.mediahome.video.WatchNextProgram.Builder अलग-अलग क्लास में एट्रिब्यूट के हिसाब से बांटा गया है: EventVideoEntity, LiveStreamingVideoEntity, MovieEntity, TvEpisodeEntity, TvSeasonEntity, TvShowEntity, VideoClipEntity

Engage SDK की तुलना में, Media Home SDK में क्लस्टर पब्लिश करना

Media Home SDK की मदद से, क्लस्टर और इकाइयों को अलग-अलग एपीआई के ज़रिए पब्लिश किया जाता था:

// 1. Fetch existing channels
List<PreviewChannel> channels = PreviewChannelHelper.getAllChannels();

// 2. If there are no channels, publish new channels
long channelId = PreviewChannelHelper.publishChannel(builder.build());

// 3. If there are existing channels, decide whether to update channel contents
PreviewChannelHelper.updatePreviewChannel(channelId, builder.build());

// 4. Delete all programs in the channel
PreviewChannelHelper.deleteAllPreviewProgramsByChannelId(channelId);

// 5. publish new programs in the channel
PreviewChannelHelper.publishPreviewProgram(builder.build());

Engage SDK की मदद से, क्लस्टर और इकाई को पब्लिश करने की प्रोसेस को एक ही एपीआई कॉल में जोड़ा जाता है. किसी क्लस्टर से जुड़ी सभी इकाइयां, उस क्लस्टर के साथ पब्लिश की जाती हैं:

Kotlin

RecommendationCluster.Builder()
            .addEntity(MOVIE_ENTITY)
            .addEntity(MOVIE_ENTITY)
            .addEntity(MOVIE_ENTITY)
            .setTitle("Top Picks For You")
            .build()

Java

new RecommendationCluster.Builder()
                        .addEntity(MOVIE_ENTITY)
                        .addEntity(MOVIE_ENTITY)
                        .addEntity(MOVIE_ENTITY)
                        .setTitle("Top Picks For You")
                        .build();

पहला चरण: इकाई का डेटा देना

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

  1. MovieEntity
  2. TvShowEntity
  3. TvSeasonEntity
  4. TvEpisodeEntity
  5. LiveStreamingVideoEntity
  6. VideoClipEntity

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

MovieEntity

एट्रिब्यूट ज़रूरी शर्त नोट
नाम ज़रूरी है
पोस्टर इमेज ज़रूरी है कम से कम एक इमेज होनी चाहिए. साथ ही, इमेज का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) भी बताना ज़रूरी है. (लैंडस्केप इमेज को प्राथमिकता दी जाती है. हालांकि, हमारा सुझाव है कि अलग-अलग स्थितियों के लिए, पोर्ट्रेट और लैंडस्केप, दोनों तरह की इमेज पास करें.)

ज़्यादा जानकारी के लिए, इमेज की खास जानकारी देखें.

प्लेबैक यूआरआई मोबाइल के लिए ज़रूरी है

फ़िल्म चलाने के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक.

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

प्लैटफ़ॉर्म के हिसाब से प्लेबैक यूआरआई मोबाइल के लिए ज़रूरी नहीं है; Google TV के लिए ज़रूरी है

फ़िल्म चलाना शुरू करने के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन के प्लैटफ़ॉर्म के हिसाब से डीप लिंक.

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

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

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

रिलीज़ की तारीख वैकल्पिक एपक मिलीसेकंड में.
उपलब्धता वैकल्पिक

उपलब्ध: उपयोगकर्ता को बिना किसी कार्रवाई के कॉन्टेंट उपलब्ध हो जाता है.

FREE_WITH_SUBSCRIPTION: सदस्यता खरीदने के बाद, उपयोगकर्ता के लिए कॉन्टेंट उपलब्ध होता है.

PAID_CONTENT: कॉन्टेंट को देखने के लिए, उपयोगकर्ता को उसे खरीदना या किराये पर लेना होगा.

PURCHASED: उपयोगकर्ता ने कॉन्टेंट खरीदा है या किराये पर लिया है.

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

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

जारी रखें: उपयोगकर्ता ने इस कॉन्टेंट को पहले ही एक मिनट से ज़्यादा समय तक देखा है.

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

अगला: उपयोगकर्ता ने किसी कॉन्टेंट का एक या एक से ज़्यादा एपिसोड पूरा देख लिया है, लेकिन एक से ज़्यादा एपिसोड बचे हैं या एक ही एपिसोड बचा है. साथ ही, आखिरी एपिसोड "नया" नहीं है और उपयोगकर्ता ने एपिसोड देखना शुरू करने से पहले ही उसे रिलीज़ कर दिया था.

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

यूज़र ऐक्टिविटी का पिछला समय शर्तों के हिसाब से ज़रूरी अगर आइटम 'जारी रखने वाले क्लस्टर' में है, तो यह एट्रिब्यूट देना ज़रूरी है. एपक मिलीसेकंड में.
वीडियो को आखिरी बार चलाए जाने का समय शर्तों के हिसाब से ज़रूरी यह तब देना ज़रूरी है, जब आइटम 'जारी रखने वाले क्लस्टर' में हो और WatchNextType, 'जारी रखें' हो. एपक मिलीसेकंड में.

TvShowEntity

एट्रिब्यूट ज़रूरी शर्त नोट
नाम ज़रूरी है
पोस्टर इमेज ज़रूरी है कम से कम एक इमेज होनी चाहिए. साथ ही, इमेज का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) भी बताना ज़रूरी है. (लैंडस्केप इमेज को प्राथमिकता दी जाती है. हालांकि, हमारा सुझाव है कि अलग-अलग स्थितियों के लिए, पोर्ट्रेट और लैंडस्केप, दोनों तरह की इमेज पास करें.)

ज़्यादा जानकारी के लिए, इमेज की खास जानकारी देखें.

जानकारी वाले पेज का यूआरआई ज़रूरी है

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

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

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

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

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

प्लैटफ़ॉर्म के हिसाब से प्लेबैक यूआरआई मोबाइल के लिए ज़रूरी नहीं है; Google TV के लिए ज़रूरी है

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

पहले एपिसोड के प्रसारण की तारीख वैकल्पिक एपक मिलीसेकंड में.
सबसे नए एपिसोड के प्रसारण की तारीख वैकल्पिक एपक मिलीसेकंड में.
उपलब्धता वैकल्पिक

उपलब्ध: उपयोगकर्ता को बिना किसी कार्रवाई के कॉन्टेंट उपलब्ध हो जाता है.

FREE_WITH_SUBSCRIPTION: सदस्यता खरीदने के बाद, उपयोगकर्ता के लिए कॉन्टेंट उपलब्ध होता है.

PAID_CONTENT: कॉन्टेंट को देखने के लिए, उपयोगकर्ता को उसे खरीदना या किराये पर लेना होगा.

PURCHASED: उपयोगकर्ता ने कॉन्टेंट खरीदा है या किराये पर लिया है.

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

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

जारी रखें: उपयोगकर्ता ने इस कॉन्टेंट को पहले ही एक मिनट से ज़्यादा समय तक देखा है.

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

अगला: उपयोगकर्ता ने किसी कॉन्टेंट का एक या एक से ज़्यादा एपिसोड पूरा देख लिया है, लेकिन एक से ज़्यादा एपिसोड बचे हैं या एक ही एपिसोड बचा है. साथ ही, आखिरी एपिसोड "नया" नहीं है और उपयोगकर्ता ने एपिसोड देखना शुरू करने से पहले ही उसे रिलीज़ कर दिया था.

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

यूज़र ऐक्टिविटी का पिछला समय शर्तों के हिसाब से ज़रूरी अगर आइटम 'जारी रखने वाले क्लस्टर' में है, तो यह एट्रिब्यूट देना ज़रूरी है. एपक मिलीसेकंड में.
वीडियो को आखिरी बार चलाए जाने का समय शर्तों के हिसाब से ज़रूरी यह तब देना ज़रूरी है, जब आइटम 'जारी रखने वाले क्लस्टर' में हो और WatchNextType, 'जारी रखें' हो. एपक मिलीसेकंड में.

TvSeasonEntity

एट्रिब्यूट ज़रूरी शर्त नोट
नाम ज़रूरी है
पोस्टर इमेज ज़रूरी है कम से कम एक इमेज होनी चाहिए. साथ ही, इमेज का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) भी बताना ज़रूरी है. (लैंडस्केप इमेज को प्राथमिकता दी जाती है. हालांकि, हमारा सुझाव है कि अलग-अलग स्थितियों के लिए, पोर्ट्रेट और लैंडस्केप, दोनों तरह की इमेज पास करें.)

ज़्यादा जानकारी के लिए, इमेज की खास जानकारी देखें.

जानकारी वाले पेज का यूआरआई ज़रूरी है

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

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

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

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

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

सीज़न नंबर दिखाना

वैकल्पिक

v1.3.1 में उपलब्ध है

स्ट्रिंग
पहले एपिसोड के प्रसारण की तारीख वैकल्पिक एपक मिलीसेकंड में.
सबसे नए एपिसोड के प्रसारण की तारीख वैकल्पिक एपक मिलीसेकंड में.
उपलब्धता वैकल्पिक

उपलब्ध: उपयोगकर्ता को बिना किसी कार्रवाई के कॉन्टेंट उपलब्ध हो जाता है.

FREE_WITH_SUBSCRIPTION: सदस्यता खरीदने के बाद, उपयोगकर्ता के लिए कॉन्टेंट उपलब्ध होता है.

PAID_CONTENT: कॉन्टेंट को देखने के लिए, उपयोगकर्ता को उसे खरीदना या किराये पर लेना होगा.

PURCHASED: उपयोगकर्ता ने कॉन्टेंट खरीदा है या किराये पर लिया है.

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

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

जारी रखें: उपयोगकर्ता ने इस कॉन्टेंट को पहले ही एक मिनट से ज़्यादा समय तक देखा है.

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

अगला: उपयोगकर्ता ने किसी कॉन्टेंट का एक या एक से ज़्यादा एपिसोड पूरा देख लिया है, लेकिन एक से ज़्यादा एपिसोड बचे हैं या एक ही एपिसोड बचा है. साथ ही, आखिरी एपिसोड "नया" नहीं है और उपयोगकर्ता ने एपिसोड देखना शुरू करने से पहले ही उसे रिलीज़ कर दिया था.

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

यूज़र ऐक्टिविटी का पिछला समय शर्तों के हिसाब से ज़रूरी अगर आइटम 'जारी रखने वाले क्लस्टर' में है, तो यह एट्रिब्यूट देना ज़रूरी है. एपक मिलीसेकंड में.
वीडियो को आखिरी बार चलाए जाने का समय शर्तों के हिसाब से ज़रूरी यह तब देना ज़रूरी है, जब आइटम 'जारी रखने वाले क्लस्टर' में हो और WatchNextType, 'जारी रखें' हो. एपक मिलीसेकंड में.

TvEpisodeEntity

एट्रिब्यूट ज़रूरी शर्त नोट
नाम ज़रूरी है
पोस्टर इमेज ज़रूरी है कम से कम एक इमेज होनी चाहिए. साथ ही, इमेज का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) भी बताना ज़रूरी है. (लैंडस्केप इमेज को प्राथमिकता दी जाती है. हालांकि, हमारा सुझाव है कि अलग-अलग स्थितियों के लिए, पोर्ट्रेट और लैंडस्केप, दोनों तरह की इमेज पास करें.)

ज़्यादा जानकारी के लिए, इमेज की खास जानकारी देखें.

प्लेबैक यूआरआई मोबाइल के लिए ज़रूरी है

एपिसोड चलाना शुरू करने के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक.

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

प्लैटफ़ॉर्म के हिसाब से प्लेबैक यूआरआई मोबाइल के लिए ज़रूरी नहीं है; Google TV के लिए ज़रूरी है

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

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

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

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

शीर्षक दिखाएं मोबाइल के लिए ज़रूरी नहीं है; Google TV पर 'देखना जारी रखें' सुविधा के लिए ज़रूरी है उस टीवी शो का टाइटल जिसका यह एपिसोड है.
सीज़न नंबर मोबाइल के लिए ज़रूरी नहीं है; Google TV पर 'देखना जारी रखें' सुविधा के लिए ज़रूरी है स्ट्रिंग
एपिसोड नंबर दिखाएं

मोबाइल के लिए ज़रूरी नहीं है; Google TV पर 'देखना जारी रखें' सुविधा के लिए ज़रूरी है

v1.3.1 में उपलब्ध है

स्ट्रिंग
प्रसारण का तारीख वैकल्पिक एपक मिलीसेकंड में.
उपलब्धता वैकल्पिक

उपलब्ध: उपयोगकर्ता को बिना किसी कार्रवाई के कॉन्टेंट उपलब्ध हो जाता है.

FREE_WITH_SUBSCRIPTION: सदस्यता खरीदने के बाद, उपयोगकर्ता के लिए कॉन्टेंट उपलब्ध होता है.

PAID_CONTENT: कॉन्टेंट को देखने के लिए, उपयोगकर्ता को उसे खरीदना या किराये पर लेना होगा.

PURCHASED: उपयोगकर्ता ने कॉन्टेंट खरीदा है या किराये पर लिया है.

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

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

जारी रखें: उपयोगकर्ता ने इस कॉन्टेंट को पहले ही एक मिनट से ज़्यादा समय तक देखा है.

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

अगला: उपयोगकर्ता ने किसी कॉन्टेंट का एक या एक से ज़्यादा एपिसोड पूरा देख लिया है, लेकिन एक से ज़्यादा एपिसोड बचे हैं या एक ही एपिसोड बचा है. साथ ही, आखिरी एपिसोड "नया" नहीं है और उपयोगकर्ता ने एपिसोड देखना शुरू करने से पहले ही उसे रिलीज़ कर दिया था.

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

यूज़र ऐक्टिविटी का पिछला समय शर्तों के हिसाब से ज़रूरी अगर आइटम 'जारी रखने वाले क्लस्टर' में है, तो यह एट्रिब्यूट देना ज़रूरी है. एपक मिलीसेकंड में.
वीडियो को आखिरी बार चलाए जाने का समय शर्तों के हिसाब से ज़रूरी यह तब देना ज़रूरी है, जब आइटम 'जारी रखने वाले क्लस्टर' में हो और WatchNextType, 'जारी रखें' हो. एपक मिलीसेकंड में.

LiveStreamingVideoEntity

एट्रिब्यूट ज़रूरी शर्त नोट
नाम ज़रूरी है
पोस्टर इमेज ज़रूरी है कम से कम एक इमेज होनी चाहिए. साथ ही, इमेज का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) भी बताना ज़रूरी है. (लैंडस्केप इमेज को प्राथमिकता दी जाती है. हालांकि, हमारा सुझाव है कि अलग-अलग स्थितियों के लिए, पोर्ट्रेट और लैंडस्केप, दोनों तरह की इमेज पास करें.)

ज़्यादा जानकारी के लिए, इमेज की खास जानकारी देखें.

प्लेबैक यूआरआई मोबाइल के लिए ज़रूरी है

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

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

प्लैटफ़ॉर्म के हिसाब से प्लेबैक यूआरआई मोबाइल के लिए ज़रूरी नहीं है; Google TV के लिए ज़रूरी है

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

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

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

जारी रखें: उपयोगकर्ता ने इस कॉन्टेंट को पहले ही एक मिनट से ज़्यादा समय तक देखा है.

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

अगला: उपयोगकर्ता ने किसी कॉन्टेंट का एक या एक से ज़्यादा एपिसोड पूरा देख लिया है, लेकिन एक से ज़्यादा एपिसोड बचे हैं या एक ही एपिसोड बचा है. साथ ही, आखिरी एपिसोड "नया" नहीं है और उपयोगकर्ता ने एपिसोड देखना शुरू करने से पहले ही उसे रिलीज़ कर दिया था.

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

यूज़र ऐक्टिविटी का पिछला समय शर्तों के हिसाब से ज़रूरी अगर आइटम 'जारी रखने वाले क्लस्टर' में है, तो यह एट्रिब्यूट देना ज़रूरी है. एपक मिलीसेकंड में.
वीडियो को आखिरी बार चलाए जाने का समय शर्तों के हिसाब से ज़रूरी यह तब देना ज़रूरी है, जब आइटम 'जारी रखने वाले क्लस्टर' में हो और WatchNextType, 'जारी रखें' हो. एपक मिलीसेकंड में.

VideoClipEntity

VideoClipEntity ऑब्जेक्ट, सोशल मीडिया से आने वाली वीडियो इकाई को दिखाता है. जैसे, TikTok या YouTube.

एट्रिब्यूट ज़रूरी शर्त नोट
नाम ज़रूरी है
पोस्टर इमेज ज़रूरी है कम से कम एक इमेज होनी चाहिए. साथ ही, इमेज का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) भी बताना ज़रूरी है. (लैंडस्केप इमेज को प्राथमिकता दी जाती है. हालांकि, हमारा सुझाव है कि अलग-अलग स्थितियों के लिए, पोर्ट्रेट और लैंडस्केप, दोनों तरह की इमेज पास करें.)

ज़्यादा जानकारी के लिए, इमेज की खास जानकारी देखें.

प्लेबैक यूआरआई मोबाइल के लिए ज़रूरी है

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

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

प्लैटफ़ॉर्म के हिसाब से प्लेबैक यूआरआई मोबाइल के लिए ज़रूरी नहीं है; Google TV के लिए ज़रूरी है

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

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

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

जारी रखें: उपयोगकर्ता ने इस कॉन्टेंट को पहले ही एक मिनट से ज़्यादा समय तक देखा है.

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

अगला: उपयोगकर्ता ने किसी कॉन्टेंट का एक या एक से ज़्यादा एपिसोड पूरा देख लिया है, लेकिन एक से ज़्यादा एपिसोड बचे हैं या एक ही एपिसोड बचा है. साथ ही, आखिरी एपिसोड "नया" नहीं है और उपयोगकर्ता ने एपिसोड देखना शुरू करने से पहले ही उसे रिलीज़ कर दिया था.

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

यूज़र ऐक्टिविटी का पिछला समय शर्तों के हिसाब से ज़रूरी अगर आइटम 'जारी रखने वाले क्लस्टर' में है, तो यह एट्रिब्यूट देना ज़रूरी है. एपक मिलीसेकंड में.
वीडियो को आखिरी बार चलाए जाने का समय शर्तों के हिसाब से ज़रूरी यह तब देना ज़रूरी है, जब आइटम 'जारी रखने वाले क्लस्टर' में हो और WatchNextType, 'जारी रखें' हो. एपक मिलीसेकंड में.

इमेज की जानकारी

यहां इमेज ऐसेट के लिए ज़रूरी शर्तें दी गई हैं:

फ़ाइल फ़ॉर्मैट

PNG, JPG, स्टैटिक GIF, WebP

फ़ाइल का ज़्यादा से ज़्यादा साइज़

5120 केबी

कुछ और सुझाव

  • इमेज के लिए सुझाया गया सेफ़ एरिया: अपने मुख्य कॉन्टेंट को इमेज के बीच वाले 80% हिस्से में रखें.

उदाहरण

Kotlin

var movie = MovieEntity.Builder()
    .setName("Avengers")
    .addPosterImage(Image.Builder()
                          .setImageUri(Uri.parse("http://www.x.com/image.png"))
                          .setImageHeightInPixel(960)
                          .setImageWidthInPixel(408)
                          .build())
    .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))
    .setReleaseDateEpochMillis(1633032895L)
    .setAvailability(ContentAvailability.AVAILABILITY_AVAILABLE)
    .setDurationMillis(12345678L)
    .addGenre("action")
    .addContentRating("R")
    .setWatchNextType(WatchNextType.TYPE_NEW)
    .setLastEngagementTimeMillis(1664568895L)
    .setCallToActionText("Watch Now")
    .addTag("Action")
    .build()

Java

MovieEntity movie = new MovieEntity.Builder()
                  .setName("Avengers")
                  .addPosterImage(
                      new Image.Builder()
                          .setImageUri(Uri.parse("http://www.x.com/image.png"))
                          .setImageHeightInPixel(960)
                          .setImageWidthInPixel(408)
                          .build())
                  .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))
                  .setReleaseDateEpochMillis(1633032895L)
                  .setAvailability(ContentAvailability.AVAILABILITY_AVAILABLE)
                  .setDurationMillis(12345678L)
                  .addGenre("action")
                  .addContentRating("R")
                  .setWatchNextType(WatchNextType.TYPE_NEW)
                  .setLastEngagementTimeMillis(1664568895L)
                  .setCallToActionText("Watch Now")
                  .addTag("Action")
                  .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 के वर्शन 1.6.0 से, खास क्लस्टर टाइप की उपलब्धता की जांच की जा सकती है. अगर आपका ऐप्लिकेशन, रुक-रुककर डेटा डालने की सुविधा का इस्तेमाल करता है, तो:

  • कॉन्टेंट देखना जारी रखने वाले क्लस्टर (जैसे, देखना जारी रखें) डिफ़ॉल्ट रूप से, उन सभी डिवाइसों पर चालू रहते हैं जिन पर यह सुविधा काम करती है.
  • अन्य क्लस्टर टाइप (जैसे, सुझाव) समय-समय पर चालू और बंद किए जाते हैं.

अगर यह डिफ़ॉल्ट कॉन्फ़िगरेशन आपकी ज़रूरतों के मुताबिक नहीं है, तो 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("Top Picks For You")
            .build()
        )
        .build()
    )

Java

client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Top Picks For You")
                        .build())
                .build());

जब सेवा को अनुरोध मिलता है, तो एक लेन-देन के अंदर ये कार्रवाइयां होती हैं:

  • डेवलपर पार्टनर का मौजूदा RecommendationCluster डेटा हटा दिया जाता है.
  • अनुरोध से मिले डेटा को पार्स करके, अपडेट किए गए 'सुझाव वाले क्लस्टर' में सेव किया जाता है.

किसी गड़बड़ी के मामले में, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति को बनाए रखा जाता है.

publishFeaturedCluster

इस एपीआई का इस्तेमाल, FeaturedCluster ऑब्जेक्ट की सूची पब्लिश करने के लिए किया जाता है.

Kotlin

client.publishFeaturedCluster(
    PublishFeaturedClusterRequest.Builder()
      .setFeaturedCluster(
        FeaturedCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

Java

client.publishFeaturedCluster(
            new PublishFeaturedClusterRequest.Builder()
                .setFeaturedCluster(
                    new FeaturedCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

जब सेवा को अनुरोध मिलता है, तो एक लेन-देन के अंदर ये कार्रवाइयां होती हैं:

  • डेवलपर पार्टनर का मौजूदा FeaturedCluster डेटा हटा दिया जाता है.
  • अनुरोध से मिले डेटा को पार्स करके, अपडेट किए गए 'चुनिंदा क्लस्टर' में सेव किया जाता है.

किसी गड़बड़ी के मामले में, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति को बनाए रखा जाता है.

publishContinuationCluster

इस एपीआई का इस्तेमाल, ContinuationCluster ऑब्जेक्ट को पब्लिश करने के लिए किया जाता है.

Kotlin

client.publishContinuationCluster(
    PublishContinuationClusterRequest.Builder()
      .setContinuationCluster(
        ContinuationCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

Java

client.publishContinuationCluster(
            new PublishContinuationClusterRequest.Builder()
                .setContinuationCluster(
                    new ContinuationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

जब सेवा को अनुरोध मिलता है, तो एक लेन-देन के अंदर ये कार्रवाइयां होती हैं:

  • डेवलपर पार्टनर का मौजूदा ContinuationCluster डेटा हटा दिया जाता है.
  • अनुरोध से मिले डेटा को पार्स करके, अपडेट किए गए 'जारी रखने वाले क्लस्टर' में सेव किया जाता है.

किसी गड़बड़ी के मामले में, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति को बनाए रखा जाता है.

publishUserAccountManagementRequest

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

साइन इन कार्ड में यह मेटाडेटा शामिल होता है -

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

कार्ड पर दिखाई गई इमेज

1264x712 रिज़ॉल्यूशन वाली इमेज, जिनका आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) 16x9 हो

शीर्षक ज़रूरी नहीं - अगर यह एट्रिब्यूट नहीं दिया गया है, तो इमेज एट्रिब्यूट देना ज़रूरी है कार्ड पर मौजूद टाइटल
ऐक्शन टेक्स्ट वैकल्पिक सीटीए पर दिखने वाला टेक्स्ट (जैसे, साइन इन करें)
सबटाइटल वैकल्पिक कार्ड पर सबटाइटल (ज़रूरी नहीं)

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());

deleteRecommendationsClusters

इस एपीआई का इस्तेमाल, सुझाव वाले क्लस्टर का कॉन्टेंट मिटाने के लिए किया जाता है.

Kotlin

client.deleteRecommendationsClusters()

Java

client.deleteRecommendationsClusters();

अनुरोध मिलने पर, सेवा सुझाव क्लस्टर से मौजूदा डेटा को हटा देती है. किसी गड़बड़ी के मामले में, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहती है.

deleteFeaturedCluster

इस एपीआई का इस्तेमाल, 'चुनिंदा क्लस्टर' का कॉन्टेंट मिटाने के लिए किया जाता है.

Kotlin

client.deleteFeaturedCluster()

Java

client.deleteFeaturedCluster();

अनुरोध मिलने पर, सेवा, चुनिंदा क्लस्टर से मौजूदा डेटा को हटा देती है. किसी गड़बड़ी के मामले में, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहती है.

deleteContinuationCluster

इस एपीआई का इस्तेमाल, 'जारी रखने वाले क्लस्टर' का कॉन्टेंट मिटाने के लिए किया जाता है.

Kotlin

client.deleteContinuationCluster()

Java

client.deleteContinuationCluster();

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

deleteUserManagementCluster

इस एपीआई का इस्तेमाल, UserAccountManagement क्लस्टर का कॉन्टेंट मिटाने के लिए किया जाता है.

Kotlin

client.deleteUserManagementCluster()

Java

client.deleteUserManagementCluster();

अनुरोध मिलने पर, सेवा UserAccountManagement क्लस्टर से मौजूदा डेटा को हटा देती है. कोई गड़बड़ी होने पर, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहती है.

deleteClusters

इस एपीआई का इस्तेमाल, किसी क्लस्टर टाइप का कॉन्टेंट मिटाने के लिए किया जाता है.

Kotlin

client.deleteClusters(
    DeleteClustersRequest.Builder()
      .addClusterType(ClusterType.TYPE_CONTINUATION)
      .addClusterType(ClusterType.TYPE_FEATURED)
      .addClusterType(ClusterType.TYPE_RECOMMENDATION)
      .build())

Java

client.deleteClusters(
            new DeleteClustersRequest.Builder()
                .addClusterType(ClusterType.TYPE_CONTINUATION)
                .addClusterType(ClusterType.TYPE_FEATURED)
                .addClusterType(ClusterType.TYPE_RECOMMENDATION)
                .build());

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

गड़बड़ी ठीक करना

हमारा सुझाव है कि पब्लिश एपीआई से टास्क के नतीजे को सुनें, ताकि टास्क को फिर से सबमिट करने और उसे पूरा करने के लिए फ़ॉलो-अप कार्रवाई की जा सके.

Kotlin

client.publishRecommendationClusters(
        PublishRecommendationClustersRequest.Builder()
          .addRecommendationCluster(..)
          .build())
      .addOnCompleteListener { task ->
        if (task.isSuccessful) {
          // do something
        } else {
          val exception = task.exception
          if (exception is AppEngageException) {
            @AppEngageErrorCode val errorCode = exception.errorCode
            if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
              // do something
            }
          }
        }
      }

Java

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