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

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

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

कैटगरी के लिए सहायता और प्लैटफ़ॉर्म

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

स्थिति कॉन्टेंट की कैटगरी या इस्तेमाल का उदाहरण इन प्लैटफ़ॉर्म पर उपलब्ध है
इस्तेमाल किया जा सकता है
(सभी प्लैटफ़ॉर्म पर इस्तेमाल किया जा सकता है)
  • कपड़ों की खरीदारी
  • ऑनलाइन मार्केटप्लेस वाले ऐप्लिकेशन
  • खुदरा दुकानदार
  • खाने-पीने की चीज़ों की खरीदारी / किराना
  • छूट और कूपन से जुड़े ऐप्लिकेशन
  • पालतू जानवर / सामान
  • मकान और घर / रीयल एस्टेट
  • संग्रह
  • Play Store में ऐप्लिकेशन टैब
  • Play Store का 'आप' टैब
  • Play Store पर मौजूद स्टोर पेज
काम नहीं करता है
  • खरीदार के लिए ऐप्लिकेशन
  • बी-टू-बी शॉपिंग
  • सेलर / कारोबारी या कंपनी का ऐप्लिकेशन
  • रसीदें स्कैन करने पर मिलने वाले इनाम
  • टेलीकॉम सेवा
  • अभी खरीदें, बाद में पेमेंट करें

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

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

शब्दावली

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

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

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

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

    • 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.6.0'
}

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

खास जानकारी

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

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

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

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

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

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

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

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

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

ShoppingEntity

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ShoppingCart

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ShoppingList

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

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

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

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

सूची का टाइटल (उदाहरण के लिए, किराने के सामान की सूची).

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

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

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

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

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

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

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

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

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

ShoppingReorderCluster

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

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

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

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

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

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

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

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

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

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

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

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

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

आइटम के लेबल

वैकल्पिक

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

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

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

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

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

पोस्टर इमेज

वैकल्पिक

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

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

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

ज़्यादा जानकारी के लिए, इमेज की खास जानकारी देखें.

ShoppingOrderTrackingCluster

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

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

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

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

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

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

Enum: IN_STORE_PICKUP, SAME_DAY_DELIVERY, MULTI_DAY_DELIVERY

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

ऑर्डर का मौजूदा स्टेटस.

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

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

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

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

ऑर्डर किए जाने के समय का एपक टाइमस्टैंप, मिलीसेकंड में.

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

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

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

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

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

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

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

मिलीसेकंड में 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
  • publishShoppingCarts
  • publishShoppingLists
  • publishShoppingReorderCluster
  • publishShoppingOrderTrackingCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteShoppingCartCluster
  • deleteShoppingListCluster
  • deleteReorderCluster
  • deleteShoppingOrderTrackingCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

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

आपके पास हर उस क्लस्टर टाइप के लिए सेवा की उपलब्धता देखने का विकल्प है जिसे आपको पब्लिश करना है. isServiceAvailable एपीआई, अनुरोध ऑब्जेक्ट ServiceAvailabilityRequest को स्वीकार करता है. इसमें क्लस्टर टाइप शामिल होते हैं. इनके लिए, सेवा की उपलब्धता की जांच करनी होती है. ServiceAvailabilityRequest के लिए ज़रूरी ClusterType enum वैल्यू, इस टेबल में देखी जा सकती हैं.

क्लस्टर का टाइप क्लस्टर टाइप कॉन्स्टेंट इंटिज़र वैल्यू
कोई जानकारी नहीं है TYPE_UNKNOWN 0
सुझाव वाला क्लस्टर TYPE_RECOMMENDATION 1
चुनिंदा क्लस्टर TYPE_FEATURED 2
जारी रखने वाला क्लस्टर TYPE_CONTINUATION 3
शॉपिंग कार्ट क्लस्टर TYPE_SHOPPING_CART 4
यूज़र मैनेजमेंट क्लस्टर TYPE_ENGAGEMENT 8
खरीदारी की सूची का क्लस्टर TYPE_SHOPPING_LIST 9
शॉपिंग के लिए फिर से ऑर्डर करने वाला क्लस्टर TYPE_SHOPPING_REORDER 10
शॉपिंग ऑर्डर ट्रैकिंग क्लस्टर TYPE_SHOPPING_ORDER_TRACKING 11
सदस्यता क्लस्टर TYPE_SUBSCRIPTION 12

Kotlin

val request = ServiceAvailabilityRequest.Builder()
    .addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
    .addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
    .build()

client.isServiceAvailable(request).addOnCompleteListener { task ->
    if (task.isSuccessful) {
        val availabilityMap = task.result
        if (availabilityMap[ClusterType.TYPE_CONTINUATION] == true) {
            // Proceed with publishing continuation content
        }
        if (availabilityMap[ClusterType.TYPE_RECOMMENDATION] == true) {
            // Proceed with publishing recommendation content
        }
    } else {
        // The IPC call itself fails, proceed with error handling logic here,
        // such as retry.
    }
}

Java

ServiceAvailabilityRequest request =
    new ServiceAvailabilityRequest.Builder()
        .addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
        .addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
        .build();

client.isServiceAvailable(request).addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
        Map<Integer, Boolean> availabilityMap = task.getResult();
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_CONTINUATION))) {
            // Proceed with publishing continuation content
        }
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_RECOMMENDATION))) {
            // Proceed with publishing recommendation content
        }
    } else {
        // The IPC call itself fails, proceed with error handling logic here,
        // such as retry.
    }
});
शर्तों के साथ सेवा की उपलब्धता की सुविधा

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

Engage SDK के वर्शन 1.6.0 से, खास क्लस्टर टाइप की उपलब्धता की जांच की जा सकती है. अगर आपका ऐप्लिकेशन, रुक-रुककर डेटा डालने की सुविधा का इस्तेमाल करता है, तो:

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

अगर यह डिफ़ॉल्ट कॉन्फ़िगरेशन आपकी ज़रूरतों के मुताबिक नहीं है, तो engage-developers@google.com पर संपर्क करें.

SDK टूल के 1.6.0 से पहले के वर्शन के लिए (अब सेवा में नहीं है)

Kotlin

client.isServiceAvailable.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        // Handle IPC call success
        if(task.result) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
}

Java

client.isServiceAvailable().addOnCompleteListener(task - > {
    if (task.isSuccessful()) {
        // Handle success
        if(task.getResult()) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
});
एक तय समयावधि में समय-समय पर जॉब की जांच करके, सेवा उपलब्ध होने पर डेटा पब्लिश किया जा सकता है.

publishRecommendationClusters

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

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

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

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

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

publishShoppingLists

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

Kotlin

client.publishShoppingLists(
            PublishShoppingListsRequest.Builder()
                .addShoppingList(
                    ShoppingList.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingLists(
            new PublishShoppingListsRequest.Builder()
                .addShoppingList(
                    new ShoppingList.Builder()
                        ...
                        .build())
                .build());

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

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

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

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

पब्लिश करने की ज़रूरी शर्तें पूरी करने वाले स्टेटस कोड की सूची :

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

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

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

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

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

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

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

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

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

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

Kotlin

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

Java

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

deleteRecommendationsClusters

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

Kotlin

client.deleteRecommendationsClusters()

Java

client.deleteRecommendationsClusters();

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

deleteFeaturedCluster

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

Kotlin

client.deleteFeaturedCluster()

Java

client.deleteFeaturedCluster();

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

deleteShoppingCartCluster

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

Kotlin

client.deleteShoppingCartCluster()

Java

client.deleteShoppingCartCluster();

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

deleteShoppingListCluster

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

Kotlin

client.deleteShoppingListCluster()

Java

client.deleteShoppingListCluster();

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

deleteReorderCluster

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

Kotlin

client.deleteReorderCluster()

Java

client.deleteReorderCluster();

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

deleteShoppingOrderTrackingCluster

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

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 हमारा सुझाव है कि यह इंटेंट मिलने पर, publishShoppingCarts कॉल शुरू करें.
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST हमारा सुझाव है कि यह इंटेंट मिलने पर, publishShoppingLists कॉल शुरू करें.
  • 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 आपसे संपर्क करके यह सूचना देता है कि अपडेट किए गए और इंटिग्रेट किए गए APK को Play Store पर पब्लिश किया जा सकता है.
  • जब Google इस बात की पुष्टि कर देगा कि आपका अपडेट किया गया APK, Play Store पर पब्लिश हो गया है, तब आपके सुझाव, चुनिंदा, शॉपिंग कार्ट, खरीदारी की सूची, फिर से ऑर्डर करने का क्लस्टर, और खरीदारी के ऑर्डर को ट्रैक करने का क्लस्टर क्लस्टर पब्लिश किए जा सकते हैं. साथ ही, ये उपयोगकर्ताओं को दिख सकते हैं.