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

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

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

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

शब्दावली

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

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

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

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

    • ShoppingEntity: क्लस्टर में मौजूद किसी एक आइटम को दिखाने वाला ऑब्जेक्ट.

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

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

    आपके शॉपिंग कार्ट का स्ट्रक्चर इस तरह से होता है:

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

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

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

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

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

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

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

    • आपके ShoppingOrderTrackingCluster इस स्ट्रक्चर का इस्तेमाल करता है:

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

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

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

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

खास जानकारी

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

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

क्लस्टर का टाइप क्लस्टर की सीमाएं किसी क्लस्टर में इकाइयों की ज़्यादा से ज़्यादा संख्या
सुझाव क्लस्टर ज़्यादा से ज़्यादा पांच ज़्यादा से ज़्यादा 25 ShoppingEntity
चुनिंदा क्लस्टर ज़्यादा से ज़्यादा एक ज़्यादा से ज़्यादा 10 ShoppingEntity
शॉपिंग कार्ट क्लस्टर ज़्यादा से ज़्यादा एक ज़्यादा से ज़्यादा तीन ShoppingCart

एक से ज़्यादा कार्ट सिर्फ़ उन ऐप्लिकेशन के लिए हैं जिनमें हर व्यापारी/कंपनी के लिए अलग-अलग कार्ट होते हैं.

शॉपिंग की सूची का क्लस्टर ज़्यादा से ज़्यादा एक ज़्यादा से ज़्यादा एक ShoppingListEntity
शॉपिंग रीऑर्डर क्लस्टर ज़्यादा से ज़्यादा एक ज़्यादा से ज़्यादा एक ReorderEntity
शॉपिंग ऑर्डर ट्रैकिंग क्लस्टर ज़्यादा से ज़्यादा तीन ज़्यादा से ज़्यादा तीन ShoppingOrderTrackingEntity

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

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

  1. ShoppingEntity
  2. ShoppingCart
  3. ShoppingList
  4. Reorder
  5. ShoppingOrderTracking

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

ShoppingEntity

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

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

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

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

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

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

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

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

इकाई की मौजूदा कीमत.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ShoppingCart

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

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

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

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

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

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

पूर्णांक >= 1
कार्रवाई टेक्स्ट वैकल्पिक

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

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

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

स्ट्रिंग
शीर्षक वैकल्पिक

कार्ट का टाइटल (उदाहरण के लिए, आपका शॉपिंग बैग).

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

अगर डेवलपर पार्टनर हर व्यापारी/कंपनी/कारोबारी के लिए अलग कार्ट पब्लिश करता है, तो कृपया टाइटल में कारोबारी/कंपनी/कारोबारी का नाम शामिल करें.

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

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

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

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

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

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

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

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

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

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

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

इसे डेवलपर पार्टनर, हर मर्चेंट के लिए अलग कार्ट पब्लिश करने के लिए इनपुट के तौर पर पास करेंगे. साथ ही, इसका इस्तेमाल रैंकिंग के लिए किया जा सकता है.

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

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

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

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

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

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

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

ShoppingList

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

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

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

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

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

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

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

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

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

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

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

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

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

ShoppingReorderCluster

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

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

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

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

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

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

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

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

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

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

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

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

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

आइटम के लेबल

वैकल्पिक

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

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

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

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

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

पोस्टर की इमेज

वैकल्पिक

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

पिछले ऑर्डर में शामिल आइटम की इमेज.

प्राथमिकता के हिसाब से, ज़्यादा से ज़्यादा 10 इमेज दी जा सकती हैं. कितनी इमेज दिखाई जाएंगी, यह डिवाइस के नाप या आकार पर निर्भर करता है.

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

ShoppingOrderTrackingCluster

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

ट्रैक किए जा रहे पैकेज/आइटम का छोटा टाइटल या ट्रैकिंग नंबर.

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

सुझाया गया टेक्स्ट साइज़: 50 वर्ण (ज़्यादा लंबे टेक्स्ट के लिए, एलिप्सिस दिखेगा)

आदेश का प्रकार ज़रूरी है

ट्रैक किए जा रहे पैकेज/आइटम का छोटा टाइटल या ट्रैकिंग नंबर.

Enum: IN_STORE_PICKUP, SAME_DAY_DELIVERY, MULTI_DAY_DELIVERY

स्थिति ज़रूरी है

ऑर्डर की मौजूदा स्थिति.

उदाहरण के लिए: "देर हो रही है", "ट्रांज़िट में है", "देर हो रही है", "शिप किया गया", "डिलीवर किया गया", "स्टॉक में नहीं है", "ऑर्डर तैयार है"

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

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

ऑर्डर करने का समय ज़रूरी है

ऑर्डर करने का समय, मिलीसेकंड में दिखाया गया युग टाइमस्टैंप.

अगर डिलीवरी के अनुमानित समय की विंडो मौजूद नहीं है, तो ऑर्डर का समय दिखाया जाएगा

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

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

यूआरआई
OrderDeliveryTimeWindow (ज़रूरी नहीं) - ट्रैक किए जा रहे ऑर्डर के लिए, ऑर्डर करने के समय से लेकर अनुमानित/असल डिलीवरी के समय तक की समयसीमा सेट करें.
OrderDeliveryTimeWindow - Start Time वैकल्पिक

मिलीसेकंड में दिखाया गया वह टाइमस्टैंप जिस पर/जिसके बाद ऑर्डर डिलीवर किया जाएगा या पिकअप के लिए तैयार हो जाएगा.

मिलीसेकंड में Epoch टाइमस्टैंप
Order DeliveryTimeWindow - खत्म होने का समय वैकल्पिक

मिलीसेकंड में दिखाया गया वह टाइमस्टैंप जब ऑर्डर डिलीवर किया जाएगा या पिकअप के लिए तैयार होगा.

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

एक आइटम/प्रॉडक्ट की इमेज जो ऑर्डर का हिस्सा है.

सुझाया गया आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) 1:1 है

दिशा-निर्देश के लिए, इमेज की जानकारी देखें.
आइटम की संख्या वैकल्पिक ऑर्डर में मौजूद आइटम की संख्या. पूर्णांक >= 1
ब्यौरा वैकल्पिक

टेक्स्ट का एक पैराग्राफ़, जिसमें क्रम में मौजूद आइटम के बारे में बताया गया हो.

ध्यान दें: उपयोगकर्ता को ब्यौरा या सबटाइटल की सूची में से कोई एक दिखेगी, दोनों नहीं.

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

टेक्स्ट का सुझाया गया साइज़: 180 वर्ण

सबटाइटल की सूची वैकल्पिक

ज़्यादा से ज़्यादा तीन सबटाइटल, जिनमें हर सबटाइटल के लिए एक लाइन में टेक्स्ट होना चाहिए.

ध्यान दें: उपयोगकर्ता को ब्यौरे या सबटाइटल की सूची दिखाई जाएगी, दोनों नहीं.

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

हर सबटाइटल के लिए सुझाया गया टेक्स्ट साइज़: ज़्यादा से ज़्यादा 50 वर्ण

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

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

टेक्स्ट का सुझाया गया साइज़: ज़्यादा से ज़्यादा 25 वर्ण

ट्रैकिंग संख्या वैकल्पिक अगर ऑर्डर की डिलीवरी की ज़रूरत है, तो ऑर्डर/पैकेज की डिलीवरी के लिए ट्रैकिंग नंबर.

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

टेक्स्ट का सुझाया गया साइज़: ज़्यादा से ज़्यादा 25 वर्ण

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

इमेज एसेट के लिए ज़रूरी जानकारी नीचे दी गई है:

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

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

चुनिंदा क्लस्टर के लिए प्राथमिकता दी जाती है

300x300 1200x1200

लैंडस्केप (1.91x1)

फ़ीचर्ड क्लस्टर के लिए प्राथमिकता दी जाती है

600x314 1200x628
पोर्ट्रेट (4x5) 480x600 960x1200

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

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

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

5120 केबी

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

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

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

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

AppEngageShoppingClient की ओर से शॉपिंग क्लस्टर पब्लिश किए जाते हैं.

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

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishShoppingCart
  • publishShoppingCarts
  • publishShoppingList
  • publishShoppingReorderCluster
  • publishShoppingOrderTrackingCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteShoppingCartCluster
  • deleteShoppingListCluster
  • deleteShoppingReorderCluster
  • deleteShoppingOrderTrackingCluster
  • 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 ऑब्जेक्ट में ये एट्रिब्यूट हो सकते हैं:

एट्रिब्यूट ज़रूरी शर्त ब्यौरा
ShoppingEntity की सूची ज़रूरी है ShoppingEntity ऑब्जेक्ट की एक सूची, जो इस सुझाव क्लस्टर के लिए सुझाव तैयार करती है.
शीर्षक ज़रूरी है

सुझाव क्लस्टर का टाइटल.

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

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

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

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

Kotlin

client.publishRecommendationClusters(
            PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Black Friday Deals")
                        .build())
                .build())

Java

client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Black Friday Deals")
                        .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 डेटा हटा दिया जाता है.
  • अनुरोध के डेटा को पार्स किया जाता है और अपडेट किए गए चुनिंदा क्लस्टर में स्टोर किया जाता है.

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

publishShoppingCart

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

Kotlin

client.publishShoppingCart(
            PublishShoppingCartRequest.Builder()
                .setShoppingCart(
                    ShoppingCart.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingCart(
            new PublishShoppingCartRequest.Builder()
                .setShoppingCart(
                    new ShoppingCart.Builder()
                        ...
                        .build())
                .build())

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

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

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

publishShoppingCarts

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

Kotlin

client.publishShoppingCarts(
            PublishShoppingCartClustersRequest.Builder()
                .addShoppingCart(
                    ShoppingCart.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingCarts(
            new PublishShoppingCartClustersRequest.Builder()
                .addShoppingCart(
                    new ShoppingCart.Builder()
                        ...
                        .build())
                .build())

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

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

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

publishShoppingList

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

Kotlin

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

Java

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

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

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

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

publishShoppingReorderCluster

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

Kotlin

client.publishShoppingReorderCluster(
            PublishShoppingReorderClusterRequest.Builder()
                .setReorderCluster(
                    ShoppingReorderCluster.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingReorderCluster(
            new PublishShoppingReorderClusterRequest.Builder()
                .setReorderCluster(
                    new ShoppingReorderCluster.Builder()
                        ...
                        .build())
                .build());

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

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

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

publishShoppingOrderTrackingCluster

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

Kotlin

client.publishShoppingOrderTrackingCluster(
            PublishShoppingOrderTrackingClusterRequest.Builder()
                .setShoppingOrderTrackingCluster(
                    ShoppingOrderTrackingCluster.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingOrderTrackingCluster(
            new PublishShoppingOrderTrackingClusterRequest.Builder()
                .setShoppingOrderTrackingCluster(
                    new ShoppingOrderTrackingCluster.Builder()
                        ...
                        .build())
                .build());

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

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

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

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

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

deleteShoppingCartCluster

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

Kotlin

client.deleteShoppingCartCluster()

Java

client.deleteShoppingCartCluster();

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

deleteShoppingListCluster

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

Kotlin

client.deleteShoppingListCluster()

Java

client.deleteShoppingListCluster();

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

deleteShoppingReorderCluster

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

Kotlin

client.deleteShoppingReorderCluster()

Java

client.deleteShoppingReorderCluster();

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

deleteShoppingOrderTrackingCluster

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

Kotlin

client.deleteShoppingOrderTrackingCluster()

Java

client.deleteShoppingOrderTrackingCluster();

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

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

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

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

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

Kotlin

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

Java

client.publishRecommendationClusters(
              new PublishRecommendationClustersRequest.Builder()
                  .addRecommendationCluster(...)
                  .build())
          .addOnCompleteListener(
              task -> {
                if (task.isSuccessful()) {
                  // do something
                } else {
                  Exception exception = task.getException();
                  if (exception instanceof AppEngageException) {
                    @AppEngageErrorCode
                    int errorCode = ((AppEngageException) exception).getErrorCode();
                    if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
                      // do something
                    }
                  }
                }
              });

गड़बड़ी को AppEngageException के तौर पर दिखाया जाता है. साथ ही, गड़बड़ी की वजह को गड़बड़ी कोड के तौर पर शामिल किया जाता है.

गड़बड़ी कोड गड़बड़ी का नाम ध्यान दें
1 SERVICE_NOT_FOUND यह सेवा दिए गए डिवाइस पर उपलब्ध नहीं है.
2 SERVICE_NOT_AVAILABLE यह सेवा दिए गए डिवाइस पर उपलब्ध है, लेकिन कॉल के समय उपलब्ध नहीं है. उदाहरण के लिए, इसे साफ़ तौर पर बंद किया गया है.
3 SERVICE_CALL_EXECUTION_FAILURE थ्रेड करने से जुड़ी समस्याओं की वजह से, टास्क पूरा नहीं हो सका. ऐसे में, फिर से कोशिश की जा सकती है.
4 SERVICE_CALL_PERMISSION_DENIED कॉलर के पास सेवा कॉल करने की अनुमति नहीं है.
5 SERVICE_CALL_INVALID_ARGUMENT अनुरोध में अमान्य डेटा है. उदाहरण के लिए, क्लस्टर की अनुमति से ज़्यादा संख्या.
6 SERVICE_CALL_INTERNAL सेवा की ओर कोई गड़बड़ी है.
7 SERVICE_CALL_RESOURCE_EXHAUSTED सेवा कॉल बहुत बार किया जाता है.

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

किसी जॉब के ज़रिए कॉन्टेंट पब्लिश करने के लिए Content API कॉल करने के अलावा, कॉन्टेंट पब्लिश करने का अनुरोध पाने के लिए, 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 shopping cart cluster publish when PUBLISH_SHOPPING_CART broadcast
  // is received
  // Trigger shopping list cluster publish when PUBLISH_SHOPPING_LIST broadcast
  // is received
  // Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is
  // received
  // Trigger shopping order tracking cluster publish when
  // PUBLISH_SHOPPING_ORDER_TRACKING_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))

// Register Featured Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_FEATURED))

// Register Shopping Cart Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_CART))

// Register Shopping List Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_LIST))

// Register Reorder Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_REORDER_CLUSTER))

// Register Shopping Order Tracking Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER))
}

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 shopping cart cluster publish when PUBLISH_SHOPPING_CART broadcast is
// received

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

// Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is
// received

// Trigger reorder cluster publish when PUBLISH_SHOPPING_ORDER_TRACKING_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.shopping.service.Intents.ACTION_PUBLISH_SHOPPING_CART));

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

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

// Register Shopping Order Tracking Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_SHOPPING_ORDER_TRACKING_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.shopping.PUBLISH_SHOPPING_CART" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_REORDER_CLUSTER" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_SHOPPING_ORDER_TRACKING_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.shopping.PUBLISH_SHOPPING_CART हमारा सुझाव है कि यह इंटेंट मिलने पर, publishShoppingCart कॉल शुरू करें.
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST हमारा सुझाव है कि यह इंटेंट मिलने पर, publishShoppingList कॉल शुरू करें.
  • com.google.android.engage.action.shopping.PUBLISH_REORDER_CLUSTER हमारा सुझाव है कि यह इंटेंट मिलने पर, publishReorderCluster कॉल शुरू करें.
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER हमारा सुझाव है कि यह इंटेंट मिलने पर, publishShoppingOrderTrackingCluster कॉल करें.

इंटिग्रेशन वर्कफ़्लो

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

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

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

संपर्क

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

अगले चरण

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

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