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

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

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

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

शब्दावली

इस इंटिग्रेशन में ये पांच क्लस्टर टाइप शामिल हैं: सुझाव, चुनिंदा, फ़ूड शॉपिंग कार्ट, फ़ूड शॉपिंग की सूची, और फिर से ऑर्डर करें.

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

    • सुझावों का क्लस्टर, ProductEntity, StoreEntity या RecipeEntity लिस्टिंग से बनाया जा सकता है. हालांकि, इसमें अलग-अलग तरह की इकाइयां शामिल नहीं की जा सकतीं.
    इमेज :`ProductEntity`, `StoreEntity`, और `RecipeEntity`. (*यूज़र इंटरफ़ेस (यूआई) सिर्फ़ उदाहरण के लिए है)
  • चुनिंदा क्लस्टर में, एक यूज़र इंटरफ़ेस (यूआई) ग्रुप में, कई डेवलपर पार्टनर में से चुनी गई इकाइयों को दिखाया जाता है. इसमें एक हाइलाइट किया गया क्लस्टर होगा. यह यूज़र इंटरफ़ेस (यूआई) के सबसे ऊपर दिखेगा. साथ ही, सुझाव वाले सभी क्लस्टर के ऊपर प्राथमिकता के तौर पर दिखेगा. हर डेवलपर पार्टनर को, 'चुनिंदा क्लस्टर' में ज़्यादा से ज़्यादा 10 इकाइयों को ब्रॉडकास्ट करने की अनुमति होगी.

    इमेज : `RecipeEntity` के साथ चुनिंदा क्लस्टर. (*यूज़र इंटरफ़ेस (यूआई) सिर्फ़ समझाने के मकसद से)
  • फ़ूड शॉपिंग कार्ट क्लस्टर, एक यूज़र इंटरफ़ेस (यूआई) ग्रुपिंग में कई डेवलपर पार्टनर के किराने के सामान के शॉपिंग कार्ट की झलक दिखाता है. इससे उपयोगकर्ताओं को अपने कार्ट में बचे सामान की खरीदारी पूरी करने के लिए कहा जाता है. फ़ूड शॉपिंग कार्ट का एक क्लस्टर है.

    • फ़ूड शॉपिंग कार्ट क्लस्टर में, कार्ट में मौजूद आइटम की कुल संख्या दिखनी चाहिए. साथ ही, इसमें उपयोगकर्ता के कार्ट में मौजूद X आइटम की इमेज भी शामिल हो सकती हैं.

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

    इमेज: किसी एक पार्टनर से मिली, फ़ूड की खरीदारी की सूची का क्लस्टर. (*यूज़र इंटरफ़ेस (यूआई) सिर्फ़ इलस्ट्रेशन के लिए है)
  • फिर से ऑर्डर करें क्लस्टर, एक यूज़र इंटरफ़ेस (यूआई) ग्रुपिंग में कई डेवलपर पार्टनर के पिछले ऑर्डर की झलक दिखाता है. साथ ही, उपयोगकर्ताओं को फिर से ऑर्डर करने के लिए कहता है. रीऑर्डर क्लस्टर एक है.

    • रीऑर्डर क्लस्टर में, उपयोगकर्ता के पिछले ऑर्डर में मौजूद आइटम की कुल संख्या दिखनी चाहिए. साथ ही, इसमें इनमें से कोई एक चीज़ भी शामिल होनी चाहिए:

      • उपयोगकर्ता के पिछले ऑर्डर में मौजूद X आइटम की इमेज.
      • उपयोगकर्ता के पिछले ऑर्डर में X आइटम के लेबल.
    इमेज: एक पार्टनर से लिया गया, खाने का ऑर्डर फिर से क्रम में लगाने वाला क्लस्टर. (*यूज़र इंटरफ़ेस (यूआई) सिर्फ़ इलस्ट्रेशन के लिए है)

सेशन की तैयारी

कम से कम एपीआई लेवल: 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.5.2'
}

खास जानकारी

यह डिज़ाइन, ज़रूरी सेवा को लागू करने के हिसाब से बनाया गया है.

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

क्लस्टर का टाइप क्लस्टर की सीमाएं क्लस्टर में इकाई की तय सीमाएं
सुझाव क्लस्टर ज़्यादा से ज़्यादा पांच ज़्यादा से ज़्यादा 25 (ProductEntity, RecipeEntity या StoreEntity)
चुनिंदा क्लस्टर ज़्यादा से ज़्यादा एक ज़्यादा से ज़्यादा 10 (ProductEntity, RecipeEntity या StoreEntity)
फ़ूड शॉपिंग कार्ट क्लस्टर ज़्यादा से ज़्यादा एक ज़्यादा से ज़्यादा एक ShoppingCartEntity
खाने की शॉपिंग की सूची का क्लस्टर ज़्यादा से ज़्यादा एक ज़्यादा से ज़्यादा एक ShoppingListEntity
फ़ूड रिऑर्डर क्लस्टर ज़्यादा से ज़्यादा एक ज़्यादा से ज़्यादा एक ReorderEntity

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

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

  1. ProductEntity
  2. StoreEntity
  3. RecipeEntity
  4. FoodShoppingCart
  5. FoodShoppingList
  6. FoodReorderCluster

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

ProductEntity

ProductEntity ऑब्जेक्ट, किसी ऐसे आइटम के बारे में बताता है जिसे डेवलपर पार्टनर पब्लिश करना चाहते हैं. जैसे, किराने का कोई आइटम, रेस्टोरेंट का कोई पकवान या कोई प्रमोशन.

इमेज : ProductEntity के एट्रिब्यूट

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

ऐप्लिकेशन में मौजूद पेज का डीप लिंक, जो प्रॉडक्ट के बारे में जानकारी दिखाता है.

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

यूआरआई
शीर्षक वैकल्पिक प्रॉडक्ट का नाम.

फ़्री टेक्स्ट

टेक्स्ट का सुझाया गया साइज़: 90 से कम वर्ण (ज़्यादा लंबा टेक्स्ट एलिप्स दिखा सकता है)

कीमत - मौजूदा शर्तों के हिसाब से ज़रूरी

प्रॉडक्ट की मौजूदा कीमत.

अगर स्ट्राइकथ्रू वाली कीमत दी गई है, तो यह ज़रूरी है.

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

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 45 से कम वर्ण (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

कॉलआउट का फ़ाइन प्रिंट वैकल्पिक कॉलआउट के लिए फ़ाइन प्रिंट टेक्स्ट.

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 45 से कम वर्ण (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

रेटिंग (ज़रूरी नहीं) - ध्यान दें: सभी रेटिंग, हमारे स्टार रेटिंग सिस्टम का इस्तेमाल करके दिखाई जाती हैं.
रेटिंग - ज़्यादा से ज़्यादा वैल्यू वैकल्पिक

रेटिंग स्केल की सबसे बड़ी वैल्यू.

अगर रेटिंग की मौजूदा वैल्यू भी दी गई है, तो यह एट्रिब्यूट देना ज़रूरी है.

संख्या >= 0.0
रेटिंग - मौजूदा वैल्यू वैकल्पिक

रेटिंग स्केल की मौजूदा वैल्यू.

अगर रेटिंग की ज़्यादा से ज़्यादा वैल्यू भी दी गई है, तो यह वैल्यू भी देनी होगी.

संख्या >= 0.0
रेटिंग - संख्या वैकल्पिक

प्रॉडक्ट को मिली रेटिंग की संख्या.

ध्यान दें: अगर आपका ऐप्लिकेशन, उपयोगकर्ताओं को इंस्टॉल की संख्या दिखाने का तरीका कंट्रोल करता है, तो यह फ़ील्ड दें. कम शब्दों वाली स्ट्रिंग का इस्तेमाल करें. उदाहरण के लिए, अगर गिनती 1,000,000 है, तो 1M जैसे छोटे वर्शन का इस्तेमाल करें, ताकि छोटे डिसप्ले साइज़ पर गिनती काट न जाए.

स्ट्रिंग
रेटिंग - गिनती की वैल्यू वैकल्पिक

प्रॉडक्ट के लिए रेटिंग की संख्या.

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

ज़्यादा समय के लिए
DisplayTimeWindow (ज़रूरी नहीं) - किसी कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाने के लिए, एक समयसीमा सेट करें
शुरू होने का टाइमस्टैंप वैकल्पिक

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

अगर यह सेट नहीं है, तो इसका मतलब है कि कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है.

मिलीसेकंड में दिखाया गया, एपिक टाइमस्टैंप
खत्म होने का टाइमस्टैंप वैकल्पिक

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

अगर यह सेट नहीं है, तो इसका मतलब है कि कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है.

मिलीसेकंड में Epoch टाइमस्टैंप

StoreEntity

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

इमेज : StoreEntity के एट्रिब्यूट

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

ऐप्लिकेशन में मौजूद उस पेज का डीप लिंक जिसमें स्टोर के बारे में जानकारी दी गई हो.

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

यूआरआई
शीर्षक वैकल्पिक स्टोर का नाम.

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 45 से कम वर्ण (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

जगह की जानकारी वैकल्पिक स्टोर की जगह.

फ़्री टेक्स्ट

टेक्स्ट का सुझाया गया साइज़: 45 से कम वर्ण (ज़्यादा लंबा टेक्स्ट एलिप्स दिखा सकता है)

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

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 45 से कम वर्ण (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

कॉलआउट का फ़ाइन प्रिंट वैकल्पिक कॉलआउट के लिए फ़ाइन प्रिंट टेक्स्ट.

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 45 से कम वर्ण (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

ब्यौरा वैकल्पिक स्टोर के बारे में जानकारी.

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 90 से कम वर्ण (ज़्यादा लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

ध्यान दें: सभी रेटिंग, हमारे स्टार रेटिंग के स्टैंडर्ड सिस्टम का इस्तेमाल करके दिखाई जाती हैं.
रेटिंग - ज़्यादा से ज़्यादा वैल्यू वैकल्पिक

रेटिंग स्केल की सबसे बड़ी वैल्यू.

अगर रेटिंग की मौजूदा वैल्यू भी दी गई है, तो यह एट्रिब्यूट देना ज़रूरी है.

संख्या >= 0.0
रेटिंग - मौजूदा वैल्यू वैकल्पिक

रेटिंग स्केल की मौजूदा वैल्यू.

अगर रेटिंग की ज़्यादा से ज़्यादा वैल्यू भी दी गई है, तो यह वैल्यू भी देनी होगी.

संख्या >= 0.0
रेटिंग - संख्या वैकल्पिक

स्टोर की रेटिंग की संख्या.

ध्यान दें: अगर आपका ऐप्लिकेशन यह कंट्रोल करना चाहता है कि उपयोगकर्ताओं को यह जानकारी कैसे दिखे, तो यह फ़ील्ड दें. उपयोगकर्ता को दिखाई जा सकने वाली कम शब्दों वाली स्ट्रिंग दें. उदाहरण के लिए, अगर संख्या 1,000,000 है, तो 1M जैसे छोटे नामों का इस्तेमाल करें, ताकि छोटे डिसप्ले साइज़ पर इसे काटा न जाए.

स्ट्रिंग
रेटिंग - गिनती की वैल्यू वैकल्पिक

स्टोर के लिए रेटिंग की संख्या.

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

ज़्यादा समय के लिए

RecipeEntity

RecipeEntity ऑब्जेक्ट, उस रेसिपी आइटम के बारे में बताता है जिसे डेवलपर पार्टनर पब्लिश करना चाहते हैं.

इमेज : RecipeEntity के एट्रिब्यूट

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

ऐप्लिकेशन में मौजूद पेज का डीप लिंक, जिसमें रेसिपी के बारे में जानकारी दिखाई गई है.

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

यूआरआई
शीर्षक वैकल्पिक रेसिपी का नाम.

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 45 से कम वर्ण (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

लेखक वैकल्पिक रेसिपी बनाने वाला व्यक्ति.

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 45 से कम वर्ण (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

बनाने/तैयार करने में लगने वाला समय वैकल्पिक रेसिपी में खाना पकने में लगने वाला समय.

फ़्री टेक्स्ट

टेक्स्ट का सुझाया गया साइज़: 45 से कम वर्ण (ज़्यादा लंबा टेक्स्ट एलिप्स दिखा सकता है)

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

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 45 से कम वर्ण (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

कैटगरी वैकल्पिक रेसिपी की कैटगरी.

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 45 से कम वर्ण (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

ब्यौरा वैकल्पिक रेसिपी के बारे में जानकारी.

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 90 से कम वर्ण (ज़्यादा लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

ध्यान दें: सभी रेटिंग, हमारे स्टैंडर्ड स्टार रेटिंग सिस्टम का इस्तेमाल करके दिखाई जाती हैं.
रेटिंग - ज़्यादा से ज़्यादा वैल्यू वैकल्पिक

रेटिंग स्केल की सबसे बड़ी वैल्यू.

अगर रेटिंग की मौजूदा वैल्यू भी दी गई है, तो यह एट्रिब्यूट देना ज़रूरी है.

संख्या >= 0.0
रेटिंग - मौजूदा वैल्यू वैकल्पिक

रेटिंग स्केल की मौजूदा वैल्यू.

अगर रेटिंग की ज़्यादा से ज़्यादा वैल्यू भी दी गई है, तो यह वैल्यू भी देनी होगी.

संख्या >= 0.0
रेटिंग - संख्या वैकल्पिक

रेसिपी को मिली रेटिंग की संख्या.

ध्यान दें: अगर आपका ऐप्लिकेशन यह कंट्रोल करना चाहता है कि उपयोगकर्ताओं को यह जानकारी कैसे दिखे, तो यह फ़ील्ड दें. उपयोगकर्ता को दिखाई जा सकने वाली कम शब्दों वाली स्ट्रिंग दें. उदाहरण के लिए, अगर संख्या 1,000,000 है, तो 1M जैसे छोटे नामों का इस्तेमाल करें, ताकि छोटे डिसप्ले साइज़ पर इसे काटा न जाए.

स्ट्रिंग
रेटिंग - गिनती की वैल्यू वैकल्पिक

रेसिपी को मिली रेटिंग की संख्या.

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

ज़्यादा समय के लिए

FoodShoppingCart

इमेज: खाने-पीने की चीज़ों के लिए शॉपिंग कार्ट क्लस्टर एट्रिब्यूट.

एट्रिब्यूट ज़रूरी शर्त ब्यौरा फ़ॉर्मैट करें
ऐक्शन यूआरआई ज़रूरी है

पार्टनर के ऐप्लिकेशन में मौजूद शॉपिंग कार्ट का डीप लिंक.

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

यूआरआई
आइटम की संख्या ज़रूरी है

शॉपिंग कार्ट में मौजूद आइटम की संख्या (सिर्फ़ प्रॉडक्ट की संख्या नहीं).

उदाहरण के लिए: अगर कार्ट में तीन संतरे और एक सेब है, तो यह संख्या चार होनी चाहिए.

पूर्णांक >= 1
शीर्षक वैकल्पिक

कार्ट का टाइटल (उदाहरण के लिए, आपका कार्ट).

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

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 25 वर्णों से कम (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

ऐक्शन टेक्स्ट वैकल्पिक

शॉपिंग कार्ट पर मौजूद बटन का कॉल-टू-ऐक्शन टेक्स्ट (उदाहरण के लिए, आपका शॉपिंग बैग).

अगर डेवलपर ने कोई कार्रवाई का टेक्स्ट नहीं दिया है, तो डिफ़ॉल्ट रूप से कार्ट देखें दिखेगा.

यह एट्रिब्यूट, 1.1.0 और उसके बाद के वर्शन में काम करता है.

स्ट्रिंग
कार्ट की इमेज वैकल्पिक

कार्ट में मौजूद हर प्रॉडक्ट की इमेज.

प्राथमिकता के हिसाब से ज़्यादा से ज़्यादा 10 इमेज दी जा सकती हैं. हालांकि, डिवाइस के फ़ॉर्म फ़ैक्टर के हिसाब से, इमेज की असल संख्या अलग-अलग हो सकती है.

दिशा-निर्देश के लिए, इमेज की जानकारी देखें.
आइटम के लेबल वैकल्पिक

खरीदारी की सूची में मौजूद आइटम के लेबल की सूची.

दिखने वाले लेबल की संख्या, डिवाइस के नाप या आकार पर निर्भर करती है.

बिना शुल्क वाले टेक्स्ट लेबल की सूची

टेक्स्ट का सुझाया गया साइज़: 20 से कम वर्ण (ज़्यादा लंबा टेक्स्ट एलिप्स दिखा सकता है)

DisplayTimeWindow (ज़रूरी नहीं) - किसी कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाने के लिए, एक समयसीमा सेट करें
शुरू होने का टाइमस्टैंप वैकल्पिक

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

अगर यह सेट नहीं है, तो इसका मतलब है कि कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है.

मिलीसेकंड में दिखाया गया, एपिक टाइमस्टैंप
खत्म होने का टाइमस्टैंप वैकल्पिक

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

अगर यह सेट नहीं है, तो इसका मतलब है कि कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है.

मिलीसेकंड में Epoch टाइमस्टैंप

FoodShoppingList

इमेज: खाने की खरीदारी की सूची का क्लस्टर.

एट्रिब्यूट ज़रूरी शर्त ब्यौरा फ़ॉर्मैट करें
ऐक्शन यूआरआई ज़रूरी है

पार्टनर के ऐप्लिकेशन में मौजूद, शॉपिंग की सूची का डीप लिंक.

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

यूआरआई
आइटम की संख्या ज़रूरी है खरीदारी की सूची में मौजूद आइटम की संख्या. पूर्णांक >= 1
शीर्षक वैकल्पिक

सूची का शीर्षक (उदाहरण के लिए, आपकी किराने के सामान की सूची).

अगर डेवलपर ने कोई टाइटल नहीं दिया है, तो डिफ़ॉल्ट रूप से खरीदारी की सूची दिखेगी.

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 25 वर्णों से कम (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

आइटम के लेबल ज़रूरी है

खरीदारी की सूची में मौजूद आइटम के लेबल की सूची.

कम से कम एक लेबल दिया जाना चाहिए. साथ ही, प्राथमिकता के हिसाब से ज़्यादा से ज़्यादा 10 लेबल दिए जा सकते हैं. डिवाइस के फ़ॉर्म फ़ैक्टर के हिसाब से, दिखने वाले लेबल की असल संख्या तय होती है.

फ़्री टेक्स्ट लेबल की सूची

सुझाया गया टेक्स्ट साइज़: 20 वर्णों से कम (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

FoodReorderCluster

इमेज: खाना फिर से ऑर्डर करने की सुविधा वाला क्लस्टर.

एट्रिब्यूट ज़रूरी शर्त ब्यौरा फ़ॉर्मैट करें
ऐक्शन यूआरआई ज़रूरी है

पार्टनर के ऐप्लिकेशन में रीऑर्डर करने के लिए डीप लिंक.

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

यूआरआई
ऐक्शन टेक्स्ट वैकल्पिक

'फिर से क्रम में लगाएं' बटन का कॉल-टू-ऐक्शन टेक्स्ट (उदाहरण के लिए, फिर से ऑर्डर करें).

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

यह एट्रिब्यूट, 1.1.0 और उसके बाद के वर्शन में काम करता है.

स्ट्रिंग
आइटम की संख्या ज़रूरी है

पिछले ऑर्डर में मौजूद आइटम की संख्या (सिर्फ़ प्रॉडक्ट की संख्या नहीं).

उदाहरण के लिए: अगर पिछले ऑर्डर में तीन छोटी कॉफ़ी और एक क्रॉसां था, तो यह संख्या 4 होनी चाहिए.

पूर्णांक >= 1
शीर्षक ज़रूरी है फिर से ऑर्डर करने के लिए इस्तेमाल किए जाने वाले आइटम का टाइटल.

फ़्री टेक्स्ट

सुझाया गया टेक्स्ट साइज़: 40 वर्णों से कम (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

आइटम के लेबल

वैकल्पिक

(अगर यह जानकारी नहीं दी गई है, तो पोस्टर की इमेज भी सबमिट की जानी चाहिए)

पिछले ऑर्डर के आइटम लेबल की सूची.

प्राथमिकता के हिसाब से ज़्यादा से ज़्यादा 10 लेबल दिए जा सकते हैं. डिवाइस के फ़ॉर्म फ़ैक्टर के आधार पर, दिखने वाले लेबल की असल संख्या तय होती है.

फ़्री टेक्स्ट की सूची

हर लेबल के लिए सुझाया गया टेक्स्ट साइज़: 20 से कम वर्ण (बहुत लंबे टेक्स्ट में एलिप्सिस दिख सकते हैं)

पोस्टर इमेज

वैकल्पिक

(अगर यह पैरामीटर उपलब्ध नहीं कराया गया है, तो आइटम के लेबल दिए जाने चाहिए)

पिछले ऑर्डर में मौजूद सामान की इमेज.

प्राथमिकता के हिसाब से ज़्यादा से ज़्यादा 10 इमेज दी जा सकती हैं. हालांकि, डिवाइस के फ़ॉर्म फ़ैक्टर के हिसाब से, इमेज की असल संख्या अलग-अलग हो सकती है.

दिशा-निर्देश के लिए, इमेज की जानकारी देखें.

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

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

आसपेक्ट रेशियो कम से कम पिक्सल सुझाए गए पिक्सल

स्क्वेयर (1x1)

पसंदीदा

300x300 1200x1200
लैंडस्केप (1.91x1) 600x314 1200x628
पोर्ट्रेट (4x5) 480x600 960x1200

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

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

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

5120 केबी

अतिरिक्त सुझाव

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

दूसरा चरण: क्लस्टर डेटा देना

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

AppEngageFoodClient की ओर से फ़ूड क्लस्टर पब्लिश किए जाते हैं.

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

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishFoodShoppingCart
  • publishFoodShoppingList
  • publishReorderCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteFoodShoppingCartCluster
  • deleteFoodShoppingListCluster
  • deleteReorderCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

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

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 ऑब्जेक्ट पब्लिश करने के लिए किया जाता है.

RecommendationCluster ऑब्जेक्ट में ये एट्रिब्यूट हो सकते हैं:

एट्रिब्यूट ज़रूरी शर्त ब्यौरा
ProductEntity, StoreEntity या RecipeEntity की सूची ज़रूरी है इस सुझाव क्लस्टर के लिए सुझाव देने वाली इकाइयों की सूची. किसी क्लस्टर में मौजूद इकाइयां एक ही तरह की होनी चाहिए.
शीर्षक ज़रूरी है

सुझाव वाले क्लस्टर का टाइटल (उदाहरण के लिए, Thanksgiving मेन्यू पर ज़्यादा बचत).

टेक्स्ट का सुझाया गया साइज़: 25 से कम वर्ण (ज़्यादा लंबा टेक्स्ट एलिप्स दिखा सकता है)

उपशीर्षक वैकल्पिक सुझाव क्लस्टर का सबटाइटल.
ऐक्शन यूआरआई वैकल्पिक

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

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

Kotlin

client.publishRecommendationClusters(
            PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Big savings on Thanksgiving menu")
                        .build())
                .build())

Java

client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Big savings on Thanksgiving menu")
                        .build())
                .build());

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

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

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

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 डेटा हटा दिया जाता है.
  • अनुरोध से मिले डेटा को पार्स करके, अपडेट किए गए हाइलाइट किए गए क्लस्टर में सेव किया जाता है.

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

publishFoodShoppingCart

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

Kotlin

client.publishFoodShoppingCart(
            PublishFoodShoppingCartClusterRequest.Builder()
                .setShoppingCart(
                    FoodShoppingCart.Builder()
                        ...
                        .build())
                .build())

Java

client.publishFoodShoppingCart(
            new PublishFoodShoppingCartClusterRequest.Builder()
                .setShoppingCart(
                    new FoodShoppingCart.Builder()
                        ...
                        .build())
                .build());

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

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

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

publishFoodShoppingList

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

Kotlin

client.publishFoodShoppingList(
            PublishFoodShoppingListRequest.Builder()
                .setFoodShoppingList(
                    FoodShoppingListEntity.Builder()
                        ...
                        .build())
                .build())

Java

client.publishFoodShoppingList(
            new PublishFoodShoppingListRequest.Builder()
                .setFoodShoppingList(
                    new FoodShoppingListEntity.Builder()
                        ...
                        .build())
                .build());

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

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

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

publishReorderCluster

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

Kotlin

client.publishReorderCluster(
            PublishReorderClusterRequest.Builder()
                .setReorderCluster(
                    FoodReorderCluster.Builder()
                        ...
                        .build())
                .build())

Java

client.publishReorderCluster(
            new PublishReorderClusterRequest.Builder()
                .setReorderCluster(
                    new FoodReorderCluster.Builder()
                        ...
                        .build())
                .build());

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

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

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

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 == पब्लिश किया गया). यह ऐसे डैशबोर्ड को पॉप्युलेट करने के लिए ज़रूरी है जो आपके इंटिग्रेशन की हेल्थ और अन्य मेट्रिक के बारे में साफ़ तौर पर जानकारी देते हैं.
  • अगर कोई कॉन्टेंट पब्लिश नहीं किया गया है, लेकिन इंटिग्रेशन का स्टेटस सही नहीं है (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();

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

deleteFoodShoppingCartCluster

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

Kotlin

client.deleteFoodShoppingCartCluster()

Java

client.deleteFoodShoppingCartCluster();

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

deleteFoodShoppingListCluster

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

Kotlin

client.deleteFoodShoppingListCluster()

Java

client.deleteFoodShoppingListCluster();

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

deleteReorderCluster

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

Kotlin

client.deleteReorderCluster()

Java

client.deleteReorderCluster();

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

deleteUserManagementCluster

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

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 सेवा कॉल बहुत बार किया जाता है.

तीसरा चरण: ब्रॉडकास्ट इंटेंट मैनेज करना

किसी जॉब के ज़रिए कॉन्टेंट पब्लिश करने के लिए Content API कॉल करने के अलावा, कॉन्टेंट पब्लिश करने का अनुरोध पाने के लिए, BroadcastReceiver सेट अप करना भी ज़रूरी है.

ब्रॉडकास्ट इंटेंट का मकसद, मुख्य रूप से ऐप्लिकेशन को फिर से चालू करना और डेटा को सिंक करना है. ब्रॉडकास्ट इंटेंट को बार-बार भेजने के लिए डिज़ाइन नहीं किया गया है. यह सिर्फ़ तब ट्रिगर होता है, जब Engage Service यह तय करती है कि कॉन्टेंट पुराना हो सकता है. उदाहरण के लिए, एक हफ़्ते पुराना. इससे यह भरोसा बढ़ता है कि उपयोगकर्ता को नया कॉन्टेंट दिखेगा, भले ही ऐप्लिकेशन को लंबे समय से इस्तेमाल न किया गया हो.

BroadcastReceiver को इन दो तरीकों से सेट अप करना होगा:

  • Context.registerReceiver() का इस्तेमाल करके, BroadcastReceiver क्लास का इंस्टेंस डाइनैमिक तौर पर रजिस्टर करें. इससे उन ऐप्लिकेशन से बातचीत करने की सुविधा चालू होती है जो अब भी मेमोरी में मौजूद हैं.
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 shopping cart cluster publish when PUBLISH_FOOD_SHOPPING_CART
// broadcast is received

// Trigger shopping list cluster publish when PUBLISH_FOOD_SHOPPING_LIST
// broadcast is received

// Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER 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));

// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED));

// Register Shopping Cart Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_CART));

// Register Shopping List Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_LIST));

// Register Reorder Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_REORDER_CLUSTER));

}

  • अपनी AndroidManifest.xml फ़ाइल में, <receiver> टैग के साथ लागू करने का एलान करें. इससे ऐप्लिकेशन को ब्रॉडकास्ट के लिए भेजे गए इंटेंट तब भी मिल सकते हैं, जब वह ऐप्लिकेशन बंद हो. साथ ही, ऐप्लिकेशन को कॉन्टेंट पब्लिश करने की अनुमति भी मिलती है.
<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      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.food.PUBLISH_FOOD_SHOPPING_CART" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTER" />
      </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.food.PUBLISH_FOOD_SHOPPING_CART हमारा सुझाव है कि इस इंटेंट का इस्तेमाल करते समय, publishFoodShoppingCart कॉल करें.
  • com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST इस इंटेंट को मिलने पर, publishFoodShoppingList कॉल शुरू करने का सुझाव दिया जाता है.
  • com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTER हमारा सुझाव है कि इस मकसद के लिए, publishReorderCluster कॉल करें.

एकीकरण वर्कफ़्लो

इंटिग्रेशन पूरा होने के बाद, उसकी पुष्टि करने के बारे में सिलसिलेवार निर्देश पाने के लिए, डेवलपर इंटिग्रेशन वर्कफ़्लो से जुड़ी जानकारी देखें.

अक्सर पूछे जाने वाले सवाल

अक्सर पूछे जाने वाले सवालों के लिए, Engage SDK के बारे में अक्सर पूछे जाने वाले सवाल देखें.

संपर्क

अगर इंटिग्रेशन की प्रोसेस के दौरान आपका कोई सवाल है, तो engagement-developers@google.com पर संपर्क करें. हमारी टीम जल्द से जल्द जवाब देगी.

अगले चरण

इस इंटिग्रेशन को पूरा करने के बाद, आपको ये काम करने होंगे:

  • engage-developers@google.com पर ईमेल भेजें और Google से टेस्ट कराने के लिए, इंटिग्रेट किया गया अपना APK अटैच करें.
  • Google इसकी पुष्टि और समीक्षा करेगा, ताकि यह पक्का किया जा सके कि इंटिग्रेशन सही तरीके से काम कर रहा है या नहीं. ज़रूरत पड़ने पर, Google ज़रूरी जानकारी देने के लिए आपसे संपर्क करेगा.
  • जांच पूरी होने और कोई बदलाव न किए जाने पर, Google आपसे संपर्क करेगा और आपको बताएगा कि अपडेट किए गए और इंटिग्रेट किए गए APK को Google Play पर पब्लिश किया जा सकता है.
  • जब Google यह पुष्टि कर लेगा कि आपका अपडेट किया गया APK Play Store पर प्रकाशित हो जाएगा, तब आपके सुझाव, चुनिंदा, शॉपिंग कार्ट, खरीदारी की सूची, और फिर से ऑर्डर करें क्लस्टर प्रकाशित किए जाएंगे और उपयोगकर्ताओं को दिखाई देंगे.