अपने उपयोगकर्ताओं तक पहुंचकर, ऐप्लिकेशन में यूज़र ऐक्टिविटी बढ़ाएं. Engage SDK टूल को इंटिग्रेट करें, ताकि लोगों को उनकी दिलचस्पी के मुताबिक सुझाव और 'देखना जारी रखें' कॉन्टेंट सीधे उपयोगकर्ता के डिवाइस पर अलग-अलग प्लैटफ़ॉर्म पर दिखे. इनमें कलेक्शन, टीवी, फ़िल्में वगैरह एक ही जगह पर देखने की सुविधा, और Play Store शामिल हैं. इंटिग्रेशन की वजह से, औसत APK में 50 केबी (कंप्रेस किया गया) से कम का डेटा जुड़ता है. साथ ही, ज़्यादातर ऐप्लिकेशन के लिए डेवलपर को एक हफ़्ते का समय लगता है. ज़्यादा जानने के लिए, हमारी कारोबार की साइट पर जाएं.
इस गाइड में, डेवलपर पार्टनर के लिए निर्देश दिए गए हैं. इनमें बताया गया है कि Engage content की सुविधाओं पर पढ़ने का कॉन्टेंट (ई-बुक, ऑडियो बुक, कॉमिक/मंगा, ब्लॉग, समाचार और पत्रिकाएं) कैसे उपलब्ध कराया जा सकता है.
कैटगरी और प्लैटफ़ॉर्म के बारे में जानकारी
Engage SDK की सुविधा के लिए, आपके ऐप्लिकेशन की कॉन्टेंट कैटगरी के आधार पर यह तय किया जाता है कि आपका ऐप्लिकेशन इस सुविधा का इस्तेमाल कर सकता है या नहीं. यहां दी गई टेबल का इस्तेमाल करके, यह पता लगाएं कि आपको किन प्लैटफ़ॉर्म पर वीडियो अपलोड करने की अनुमति है:
| स्थिति | कॉन्टेंट की कैटगरी या इस्तेमाल का उदाहरण | इन प्लैटफ़ॉर्म पर काम करती हैं |
|---|---|---|
|
उपलब्ध है (सभी प्लैटफ़ॉर्म पर इस्तेमाल किया जा सकता है) |
|
|
|
कुछ हद तक काम करती है (कुछ प्लैटफ़ॉर्म पर उपलब्ध है) |
|
|
| काम नहीं करता है |
|
समाचार ऐप्लिकेशन
न्यूज़ ऐप्लिकेशन अलग-अलग तरह का कॉन्टेंट उपलब्ध कराते हैं. हर कॉन्टेंट के लिए, ज़रूरी शर्तें अलग-अलग होती हैं. Play Store पर Engage SDK का कॉन्टेंट, Play Premium Growth Tools के मुताबिक होता है. इसलिए, समाचार ऐप्लिकेशन के लेख और वीडियो क्लिप, Play Store पर नहीं दिखाए जा सकते. हालांकि, इन्हें कलेक्शन और Entertainment Space पर दिखाया जा सकता है. इसके उलट, पॉडकास्ट और रेसिपी जैसे गैर-पारंपरिक समाचार कॉन्टेंट को Play Store पर उपलब्ध कराया जा सकता है:
| इकाई का टाइप | कलेक्शन में शामिल होने की ज़रूरी शर्तें पूरी करता है | टीवी, फ़िल्में वगैरह एक ही जगह पर देखने की सुविधा के लिए ज़रूरी शर्तें पूरी करता हो | Play Store पर उपलब्ध है |
|---|---|---|---|
| समाचार लेख | हां (पढ़ें टैब) | हां (पढ़ें टैब) | नहीं |
| वीडियो क्लिप | हां (देखें टैब) | हां (देखें टैब) | नहीं |
| पॉडकास्ट | हां (सुनें टैब) | हां (सुनें टैब) | हां |
| रेसिपी | हां (खाना टैब) | नहीं | हां |
Android की स्किल
GitHub पर देखेंEngage SDK को इंटिग्रेट करना
android skills add engage-sdk-integrationइंटिग्रेशन की जानकारी
शब्दावली
इस इंटिग्रेशन में, तीन तरह के क्लस्टर शामिल होते हैं: सुझाव, जारी रखें, और चुनिंदा.
सुझाव के क्लस्टर, किसी एक डेवलपर पार्टनर के कॉन्टेंट में से आपकी दिलचस्पी के हिसाब से सुझाव दिखाते हैं.
आपको इस तरह के सुझाव दिखेंगे:
सुझाव के क्लस्टर: एक यूज़र इंटरफ़ेस (यूआई) दिखता है. इसमें किसी एक डेवलपर पार्टनर के कॉन्टेंट में सुझाव दिखाए जाते हैं.
पहली इमेज. यह टीवी, फ़िल्में वगैरह एक ही जगह पर देखने की सुविधा का यूज़र इंटरफ़ेस है. इसमें किसी एक पार्टनर के कॉन्टेंट में से सुझाव दिखाए जा रहे हैं. इकाई: इसमें एक कॉन्टेंट दिखता है. कोई इकाई, ई-बुक, ऑडियो बुक, बुक सीरीज़ वगैरह हो सकती है. इकाई के काम करने वाले टाइप की सूची देखने के लिए, इकाई का डेटा दें सेक्शन देखें.
दूसरी इमेज. यह टीवी, फ़िल्में वगैरह एक ही जगह पर देखने की सुविधा का यूज़र इंटरफ़ेस (यूआई) है. इसमें किसी एक पार्टनर के सुझाव वाले क्लस्टर में एक इकाई दिख रही है.
जारी रखने वाला क्लस्टर, एक ही यूज़र इंटरफ़ेस (यूआई) ग्रुपिंग में, कई डेवलपर पार्टनर की अधूरी किताबें दिखाता है. हर डेवलपर पार्टनर को, जारी रखने वाले क्लस्टर में ज़्यादा से ज़्यादा 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 |
पहला चरण: इकाई का डेटा उपलब्ध कराना
एसडीके ने हर आइटम टाइप को दिखाने के लिए अलग-अलग इकाइयां तय की हैं. हम Read कैटगरी के लिए, इन इकाइयों का इस्तेमाल कर सकते हैं:
EbookEntityAudiobookEntityBookSeriesEntity
यहाँ दिए गए चार्ट में, हर टाइप के लिए उपलब्ध एट्रिब्यूट और ज़रूरी शर्तों के बारे में बताया गया है.
EbookEntity
EbookEntity ऑब्जेक्ट, किसी ई-बुक को दिखाता है. उदाहरण के लिए, मिशेल ओबामा की Becoming की ई-बुक.
| एट्रिब्यूट | ज़रूरी शर्त | नोट |
|---|---|---|
| नाम | ज़रूरी है | |
| पोस्टर की इमेज | ज़रूरी है | कम से कम एक इमेज देना ज़रूरी है. दिशा-निर्देशों के लिए, इमेज की खास जानकारी देखें. |
| लेखक | ज़रूरी है | कम से कम एक लेखक का नाम देना ज़रूरी है. |
| कार्रवाई करने के लिंक का यूआरआई | ज़रूरी है |
ई-बुक के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें |
| पब्लिश होने की तारीख | वैकल्पिक | अगर दिया गया है, तो एपक मिलीसेकंड में. |
| ब्यौरा | वैकल्पिक | अगर यह जानकारी दी जाती है, तो इसमें 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 | ||
| शुरू होने का टाइमस्टैंप | वैकल्पिक |
यह वह इपोक टाइमस्टैंप है जिसके बाद कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जाना चाहिए. इस नीति को सेट न करने पर, कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है. एपक मिलीसेकंड में. |
| खत्म होने का टाइमस्टैंप | वैकल्पिक |
यह वह इपोक टाइमस्टैंप है जिसके बाद, कॉन्टेंट को प्लैटफ़ॉर्म पर नहीं दिखाया जाता. इस नीति को सेट न करने पर, कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है. एपक मिलीसेकंड में. |
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 | ||
| शुरू होने का टाइमस्टैंप | वैकल्पिक |
यह वह इपोक टाइमस्टैंप है जिसके बाद कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जाना चाहिए. इस नीति को सेट न करने पर, कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है. एपक मिलीसेकंड में. |
| खत्म होने का टाइमस्टैंप | वैकल्पिक |
यह वह इपोक टाइमस्टैंप है जिसके बाद, कॉन्टेंट को प्लैटफ़ॉर्म पर नहीं दिखाया जाता. इस नीति को सेट न करने पर, कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है. एपक मिलीसेकंड में. |
BookSeriesEntity
BookSeriesEntity ऑब्जेक्ट, किसी बुक सीरीज़ को दिखाता है. उदाहरण के लिए, हैरी पॉटर बुक सीरीज़, जिसमें सात किताबें हैं.
| एट्रिब्यूट | ज़रूरी शर्त | नोट |
|---|---|---|
| नाम | ज़रूरी है | |
| पोस्टर की इमेज | ज़रूरी है | कम से कम एक इमेज देना ज़रूरी है. दिशा-निर्देशों के लिए, इमेज की खास जानकारी देखें. |
| लेखक | ज़रूरी है | कम से कम एक लेखक का नाम मौजूद होना चाहिए. |
| कार्रवाई करने के लिंक का यूआरआई | ज़रूरी है |
ऑडियो बुक या ई-बुक के लिए, सेवा देने वाली कंपनी के ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. इस अक्सर पूछे जाने वाले सवाल को पढ़ें |
| किताबों की संख्या | ज़रूरी है | सीरीज़ में शामिल किताबों की संख्या. |
| ब्यौरा | वैकल्पिक | अगर यह जानकारी दी जाती है, तो इसमें 200 से ज़्यादा वर्ण नहीं होने चाहिए. |
| शैली | वैकल्पिक | किताब से जुड़ी शैलियों की सूची. |
| किताब का टाइप जारी रखें | वैकल्पिक |
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% हिस्से में रखें.
उदाहरण
AudiobookEntity audiobookEntity =
new AudiobookEntity.Builder()
.setName("Becoming")
.addPosterImage(
new Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(960)
.setImageWidthInPixel(408)
.build())
.addAuthor("Michelle Obama")
.addNarrator("Michelle Obama")
.setActionLinkUri(Uri.parse("https://play.google/audiobooks/1"))
.setDurationMillis(16335L)
.setPublishDateEpochMillis(1633032895L)
.setDescription("An intimate, powerful, and inspiring memoir")
.setPrice("$16.95")
.addGenre("biography")
.build();
दूसरा चरण: क्लस्टर का डेटा उपलब्ध कराना
हमारा सुझाव है कि कॉन्टेंट पब्लिश करने का काम बैकग्राउंड में किया जाए. उदाहरण के लिए, WorkManager का इस्तेमाल करके. साथ ही, इसे नियमित तौर पर या इवेंट के आधार पर शेड्यूल किया जाए. उदाहरण के लिए, हर बार जब उपयोगकर्ता ऐप्लिकेशन खोलता है या जब उपयोगकर्ता ने अभी-अभी अपनी कार्ट में कुछ जोड़ा है.
AppEngagePublishClient, क्लस्टर पब्लिश करने के लिए ज़िम्मेदार है. क्लाइंट में ये एपीआई उपलब्ध हैं:
isServiceAvailablepublishRecommendationClusterspublishFeaturedClusterpublishContinuationClusterpublishUserAccountManagementRequestupdatePublishStatusdeleteRecommendationsClustersdeleteFeaturedClusterdeleteContinuationClusterdeleteUserManagementClusterdeleteClusters
isServiceAvailable
इस एपीआई का इस्तेमाल यह देखने के लिए किया जाता है कि सेवा, इंटिग्रेशन के लिए उपलब्ध है या नहीं. साथ ही, यह भी देखा जाता है कि कॉन्टेंट को डिवाइस पर दिखाया जा सकता है या नहीं.
Engage SDK v1.6.0 और इसके बाद के वर्शन के लिए (सुझाया गया)
Android की स्किल
GitHub पर देखेंEngage SDK इंटिग्रेशन
android skills add engage-sdk-integrationUse the engage-sdk-integration skill to use Engage SDK 1.6.0 and refactor isServiceAvailable to pass ServiceAvailabilityRequest for publishing all cluster types.आपको जिस क्लस्टर टाइप को पब्लिश करना है उसके लिए, सेवा की उपलब्धता देखी जा सकती है. isServiceAvailable एपीआई, अनुरोध ऑब्जेक्ट ServiceAvailabilityRequest स्वीकार करता है. इसमें क्लस्टर के वे टाइप शामिल होते हैं जिनके लिए सेवा की उपलब्धता की जांच करनी होती है. ServiceAvailabilityRequest के लिए ज़रूरी ClusterType enum वैल्यू, यहां दी गई टेबल में देखी जा सकती हैं.
| क्लस्टर का टाइप | क्लस्टर टाइप कॉन्स्टेंट | पूर्णांक वैल्यू |
|---|---|---|
| कोई जानकारी नहीं है | TYPE_UNKNOWN |
0 |
| सुझाव वाला क्लस्टर | TYPE_RECOMMENDATION |
1 |
| चुनिंदा क्लस्टर | TYPE_FEATURED |
2 |
| जारी रखने वाला क्लस्टर | TYPE_CONTINUATION |
3 |
| यूज़र मैनेजमेंट क्लस्टर | TYPE_ENGAGEMENT |
8 |
| सदस्यता क्लस्टर | TYPE_SUBSCRIPTION |
12 |
Kotlin
val request = ServiceAvailabilityRequest.Builder()
.addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
.addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
.build()
client.isServiceAvailable(request).addOnCompleteListener { task ->
if (task.isSuccessful) {
val availabilityMap = task.result
if (availabilityMap[ClusterType.TYPE_CONTINUATION] == true) {
// Proceed with publishing continuation content
}
if (availabilityMap[ClusterType.TYPE_RECOMMENDATION] == true) {
// Proceed with publishing recommendation content
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
}
Java
ServiceAvailabilityRequest request =
new ServiceAvailabilityRequest.Builder()
.addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
.addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
.build();
client.isServiceAvailable(request).addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Map<Integer, Boolean> availabilityMap = task.getResult();
if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_CONTINUATION))) {
// Proceed with publishing continuation content
}
if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_RECOMMENDATION))) {
// Proceed with publishing recommendation content
}
} else {
// The IPC call itself fails, proceed with error handling logic here such as retry.
}
});
शर्तों के साथ सेवा की उपलब्धता की सुविधा
इंटिग्रेट किए गए कुछ ऐप्लिकेशन, खास कॉन्फ़िगरेशन का अनुरोध करते हैं. इससे Engage सेवा को समय-समय पर चालू और बंद किया जा सकता है, ताकि विज्ञापन दिखाने की लागत कम की जा सके. हालांकि, कॉन्टेंट को कुछ समय के लिए उपलब्ध कराने की इस रणनीति का इस्तेमाल किया जा सकता है. इससे उपयोगकर्ता और प्रॉडक्ट पर बुरा असर पड़ता है. जैसे, पुराना कॉन्टेंट नहीं दिखाया जाएगा और कुछ प्लैटफ़ॉर्म पर कॉन्टेंट उपलब्ध नहीं कराया जाएगा.
Engage SDK के v1.6.0 वर्शन से, खास तरह के क्लस्टर के लिए उपलब्धता की जांच की जा सकती है. इससे ज़्यादा आसानी से काम किया जा सकता है.जैसे, अगर किसी ऐप्लिकेशन ने बीच-बीच में कॉन्टेंट से जुड़ी रणनीति अपनाई है, तो कुछ क्लस्टर टाइप इस रणनीति का पालन कर सकते हैं. वहीं, अन्य क्लस्टर टाइप हमेशा चालू रहते हैं (जैसे, जारी रखने वाले क्लस्टर).
अगर किसी वजह से, Engage सेवा को सभी ज़रूरी डिवाइसों पर ‘हमेशा’ चालू नहीं रखना है और इसे कुछ डिवाइसों पर कभी-कभी चालू करने के लिए कॉन्फ़िगर किया गया है, तो भी डिफ़ॉल्ट कॉन्फ़िगरेशन के तहत, जारी रखने वाले सभी क्लस्टर पब्लिकेशन (जैसे, पढ़ना जारी रखें) चालू रहेंगे. साथ ही, बाकी क्लस्टर टाइप कभी-कभी चालू और बंद होंगे. अगर आपके लिए डेटा को कुछ-कुछ समय के अंतराल पर इकट्ठा करने की सुविधा लागू होती है, लेकिन यह डिफ़ॉल्ट कॉन्फ़िगरेशन आपकी ज़रूरतों के हिसाब से सही नहीं है, तो कृपया engage-developers@google.com पर संपर्क करें.
SDK टूल के 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("Reconnect with yourself")
.build())
.build())
Java
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
new RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Reconnect with yourself")
.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(book_entity1)
.addEntity(book_entity2)
.build())
.build())
Java
client.publishContinuationCluster(
PublishContinuationClusterRequest.Builder()
.setContinuationCluster(
ContinuationCluster.Builder()
.addEntity(book_entity1)
.addEntity(book_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
It is recommended to start apublishContinuationCluster` कॉल करें.
इंटिग्रेशन का वर्कफ़्लो
इंटिग्रेशन पूरा होने के बाद, उसकी पुष्टि करने के लिए सिलसिलेवार तरीके से दी गई गाइड देखने के लिए, Engage डेवलपर इंटिग्रेशन वर्कफ़्लो देखें.
अक्सर पूछे जाने वाले सवाल
अक्सर पूछे जाने वाले सवालों के लिए, Engage SDK के बारे में अक्सर पूछे जाने वाले सवाल देखें.
संपर्क
अगर इंटिग्रेशन की प्रोसेस के दौरान आपका कोई सवाल है, तो engage-developers@google.com से संपर्क करें. हमारी टीम जल्द से जल्द जवाब देगी.
अगले चरण
इस इंटिग्रेशन को पूरा करने के बाद, आपको ये काम करने होंगे:
engage-developers@google.comको एक ईमेल भेजें. साथ ही, इंटिग्रेट किया गया वह APK अटैच करें जिसे Google को टेस्ट करना है.- Google, पुष्टि करने और समीक्षा करने की प्रोसेस को अंदरूनी तौर पर पूरा करेगा. इससे यह पक्का किया जा सकेगा कि इंटिग्रेशन उम्मीद के मुताबिक काम कर रहा है. अगर बदलाव करने की ज़रूरत होगी, तो Google आपसे संपर्क करेगा और ज़रूरी जानकारी देगा.
- जांच पूरी होने और किसी भी बदलाव की ज़रूरत न होने पर, Google आपसे संपर्क करेगा. इसमें आपको बताया जाएगा कि Play Store पर अपडेट किया गया और इंटिग्रेट किया गया APK पब्लिश किया जा सकता है.
- Google से यह पुष्टि होने के बाद कि आपका अपडेट किया गया APK, Play Store पर पब्लिश कर दिया गया है, आपके सुझाव, चुनिंदा, और जारी रखें क्लस्टर पब्लिश कर दिए जाएंगे. साथ ही, ये उपयोगकर्ताओं को दिखने लगेंगे.