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

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

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

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

शब्दावली

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

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

    आपको इस तरह के सुझाव दिखते हैं:

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

    • ShoppingEntity: इसमें एक कॉन्टेंट दिखता है.

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

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

    आपका शॉपिंग कार्ट इस तरह दिखता है:

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

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

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

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

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

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

    UI में सबसे ऊपर ShoppingOrderTracking का एक ही क्लस्टर दिखता है. इसे सभी Recommendation क्लस्टर से ऊपर प्राथमिकता दी जाती है. हर डेवलपर पार्टनर को, ShoppingOrderTrackingEntity के कई आइटम ब्रॉडकास्ट करने की अनुमति होती है. ये आइटम, ShoppingOrderTracking क्लस्टर में ब्रॉडकास्ट किए जाते हैं.

    • 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 में पैकेज की जानकारी देखने की सुविधा लेख पढ़ें.

खास जानकारी

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

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

क्लस्टर का टाइप क्लस्टर की सीमाएं किसी क्लस्टर में ज़्यादा से ज़्यादा कितनी इकाइयां हो सकती हैं
सुझाव वाले क्लस्टर ज़्यादा से ज़्यादा 7 ज़्यादा से ज़्यादा 50 ShoppingEntity
चुनिंदा क्लस्टर ज़्यादा से ज़्यादा 1 ज़्यादा से ज़्यादा 20 ShoppingEntity
शॉपिंग कार्ट क्लस्टर ज़्यादा से ज़्यादा 1 ज़्यादा से ज़्यादा 3 ShoppingCart

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

शॉपिंग की सूची वाला क्लस्टर ज़्यादा से ज़्यादा 1 ज़्यादा से ज़्यादा 1 ShoppingListEntity
Shopping Reorder Cluster ज़्यादा से ज़्यादा 1 ज़्यादा से ज़्यादा 1 ReorderEntity
Shopping Order Tracking Cluster ज़्यादा से ज़्यादा 3 ज़्यादा से ज़्यादा 3 ShoppingOrderTrackingEntity

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

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

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

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

ShoppingEntity

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ShoppingCart

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

एपॉक टाइमस्टैंप, मिलीसेकंड में
OrderDeliveryTimeWindow - End Time वैकल्पिक

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

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

ऑर्डर में शामिल किसी एक सामान/प्रॉडक्ट की इमेज.

सुझाया गया आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) 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 Cluster में सेव किया जाता है.

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

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 Cluster में सेव किया जाता है.

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

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

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

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

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

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

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

deleteShoppingCartCluster

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

Kotlin

client.deleteShoppingCartCluster()

Java

client.deleteShoppingCartCluster();

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

deleteShoppingListCluster

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

Kotlin

client.deleteShoppingListCluster()

Java

client.deleteShoppingListCluster();

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

deleteShoppingReorderCluster

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

Kotlin

client.deleteShoppingReorderCluster()

Java

client.deleteShoppingReorderCluster();

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

deleteShoppingOrderTrackingCluster

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

Kotlin

client.deleteShoppingOrderTrackingCluster()

Java

client.deleteShoppingOrderTrackingCluster();

अनुरोध मिलने पर, सेवा मौजूदा डेटा को Shopping Order Tracking 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());

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

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

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

Kotlin

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

Java

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

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

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

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

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

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

BroadcastReceiver को इन दो तरीकों से सेट अप किया जाना चाहिए:

  • Context.registerReceiver() का इस्तेमाल करके, BroadcastReceiver क्लास के इंस्टेंस को डाइनैमिक तौर पर रजिस्टर करें. इससे उन ऐप्लिकेशन से कम्यूनिकेशन किया जा सकता है जो अब भी मेमोरी में लाइव हैं.

Kotlin

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION
  // broadcast is received
  // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is
  // received
  // Trigger 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),
                           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 Shopping Cart Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_CART),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Shopping List Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_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)

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

// Register Shopping List Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_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);

// 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),
                         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.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 डेवलपर इंटिग्रेशन वर्कफ़्लो देखें.

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

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

संपर्क

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

अगले चरण

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

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