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

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

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

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

शब्दावली

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

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

    • सुझाव वाले क्लस्टर में 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'
}

खास जानकारी

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

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

क्लस्टर का टाइप क्लस्टर की सीमाएं किसी क्लस्टर में ज़्यादा से ज़्यादा कितनी इकाइयां हो सकती हैं
सुझाव वाले क्लस्टर ज़्यादा से ज़्यादा 7 ज़्यादा से ज़्यादा 50 (ProductEntity, RecipeEntity या StoreEntity)
चुनिंदा क्लस्टर ज़्यादा से ज़्यादा 1 ज़्यादा से ज़्यादा 20 (ProductEntity, RecipeEntity या StoreEntity)
फ़ूड शॉपिंग कार्ट क्लस्टर ज़्यादा से ज़्यादा 1 ज़्यादा से ज़्यादा 1 ShoppingCartEntity
खाने-पीने के सामान की शॉपिंग लिस्ट का क्लस्टर ज़्यादा से ज़्यादा 1 ज़्यादा से ज़्यादा 1 ShoppingListEntity
खाने का फिर से ऑर्डर करने से जुड़ा क्लस्टर ज़्यादा से ज़्यादा 1 ज़्यादा से ज़्यादा 1 ReorderEntity

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

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

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

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

ProductEntity

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

आंकड़ा : ProductEntity के एट्रिब्यूट

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

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

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

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

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

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

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

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

अगर स्ट्राइकथ्रू कीमत दी गई है, तो यह एट्रिब्यूट देना ज़रूरी है.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

एपॉक टाइमस्टैंप, मिलीसेकंड में

StoreEntity

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

आंकड़ा : StoreEntity के एट्रिब्यूट

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

कैटगरी वैकल्पिक

किसी स्टोर की कैटगरी. खाने-पीने की जगहों के हिसाब से, यह "फ़्रेंच", "न्यू अमेरिकन", "रामेन", "फ़ाइन डाइनिंग" जैसे व्यंजन हो सकते हैं.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

RecipeEntity

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

आंकड़ा : RecipeEntity के एट्रिब्यूट

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

FoodShoppingCart

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

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

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

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

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

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

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

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

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

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

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

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

कार्रवाई का टेक्स्ट वैकल्पिक

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

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

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

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

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

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

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

शॉपिंग लिस्ट में मौजूद आइटम के लिए लेबल की सूची.

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

मुफ़्त में उपलब्ध टेक्स्ट लेबल की सूची

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

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

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

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

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

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

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

एपॉक टाइमस्टैंप, मिलीसेकंड में

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 की सूची ज़रूरी है उन इकाइयों की सूची जिनसे इस सुझाव क्लस्टर के लिए सुझाव बनाए जाते हैं. एक क्लस्टर में मौजूद सभी इकाइयां एक ही तरह की होनी चाहिए.
शीर्षक ज़रूरी है

सुझाव वाले क्लस्टर का टाइटल. उदाहरण के लिए, थैंक्सगिविंग के मेन्यू पर बड़ी बचत.

सुझाया गया टेक्स्ट साइज़: 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 Cluster में सेव किया जाता है.

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

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 == PUBLISHED). ऐसा इसलिए, ताकि उन डैशबोर्ड में जानकारी भरी जा सके जो इस स्टेटस का इस्तेमाल करके, आपके इंटिग्रेशन की परफ़ॉर्मेंस और अन्य मेट्रिक की जानकारी देते हैं.
  • अगर कोई कॉन्टेंट पब्लिश नहीं किया गया है, लेकिन इंटिग्रेशन का स्टेटस ठीक है (STATUS == NOT_PUBLISHED), तो Google, ऐप्लिकेशन के परफ़ॉर्मेंस डैशबोर्ड में सूचनाएं ट्रिगर करने से बच सकता है. इससे पुष्टि होती है कि कॉन्टेंट को पब्लिश नहीं किया गया है, क्योंकि सेवा देने वाली कंपनी के हिसाब से अनुमानित स्थिति है.
  • इससे डेवलपर को यह जानकारी मिलती है कि डेटा कब पब्लिश किया गया है और कब नहीं.
  • Google, स्टेटस कोड का इस्तेमाल करके उपयोगकर्ता को ऐप्लिकेशन में कुछ कार्रवाइयां करने के लिए सूचना दे सकता है. इससे उपयोगकर्ता को ऐप्लिकेशन का कॉन्टेंट दिखेगा या वह समस्या को हल कर पाएगा.

पब्लिश करने की मंज़ूरी वाले स्टेटस कोड की सूची यहां दी गई है :

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,

// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,

// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,

// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,

// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,

// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,

// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,

// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER

अगर किसी उपयोगकर्ता के लॉग इन न करने की वजह से कॉन्टेंट पब्लिश नहीं किया जाता है, तो Google, साइन इन कार्ड पब्लिश करने का सुझाव देगा. अगर किसी वजह से, सेवा देने वाली कंपनियां 'साइन इन करें' कार्ड पब्लिश नहीं कर पा रही हैं, तो हमारा सुझाव है कि वे updatePublishStatus API को कॉल करें. इसके लिए, स्टेटस कोड NOT_PUBLISHED_REQUIRES_SIGN_IN का इस्तेमाल करें

Kotlin

client.updatePublishStatus(
   PublishStatusRequest.Builder()
     .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
     .build())

Java

client.updatePublishStatus(
    new PublishStatusRequest.Builder()
        .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
        .build());

deleteRecommendationClusters

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

Kotlin

client.deleteRecommendationClusters()

Java

client.deleteRecommendationClusters();

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

deleteFeaturedCluster

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

Kotlin

client.deleteFeaturedCluster()

Java

client.deleteFeaturedCluster();

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

deleteFoodShoppingCartCluster

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

Kotlin

client.deleteFoodShoppingCartCluster()

Java

client.deleteFoodShoppingCartCluster();

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

deleteFoodShoppingListCluster

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

Kotlin

client.deleteFoodShoppingListCluster()

Java

client.deleteFoodShoppingListCluster();

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

deleteReorderCluster

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

Kotlin

client.deleteReorderCluster()

Java

client.deleteReorderCluster();

अनुरोध मिलने पर, सेवा मौजूदा डेटा को Reorder 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 food shopping cart cluster publish when PUBLISH_FOOD_SHOPPING_CART broadcast
  // is received
  // Trigger food shopping list cluster publish when PUBLISH_FOOD_SHOPPING_LIST broadcast
  // is received
  // Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER 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 food Shopping Cart Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_FOOD_SHOPPING_CART),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register food Shopping List Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_FOOD_SHOPPING_LIST),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Reorder Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_REORDER_CLUSTER),
                           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 food shopping cart cluster publish when PUBLISH_FOOD_SHOPPING_CART broadcast is
// received

// Trigger food 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),
                         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 food Shopping Cart Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_CART),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register food Shopping List Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_LIST),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Reorder Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_REORDER_CLUSTER),
                         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.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 डेवलपर इंटिग्रेशन वर्कफ़्लो देखें.

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

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

संपर्क

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

अगले चरण

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

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