एंगेजमेंट SDK सोशल: तीसरे पक्ष के तकनीकी इंटिग्रेशन के निर्देश

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

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

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

इस सेक्शन में इंटिग्रेशन की जानकारी कैप्चर की जाती है.

शब्दावली

सुझाव क्लस्टर, किसी डेवलपर पार्टनर से आपकी दिलचस्पी के मुताबिक सुझाव दिखाते हैं.

आपके सुझावों के लिए यह तरीका अपनाया जाता है:

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

हर सुझाव क्लस्टर में, इनमें से किसी एक तरह की इकाई होती है :

  • पोर्ट्रेट मीडिया एंटिटी
  • SocialPostEntity

PortraitMediaEntity में, पोस्ट के लिए पोर्ट्रेट साइज़ वाली एक इमेज होनी चाहिए. प्रोफ़ाइल और इंटरैक्शन से जुड़ा मेटाडेटा ज़रूरी नहीं है.

  • पोस्ट करें

    • पोर्ट्रेट मोड में इमेज और टाइमस्टैंप या
    • पोर्ट्रेट मोड में इमेज + टेक्स्ट कॉन्टेंट और टाइमस्टैंप
  • प्रोफ़ाइल

    • अवतार, नाम या हैंडल, अन्य इमेज
  • इंटरैक्शन

    • सिर्फ़ गिनती और लेबल करना या
    • संख्या और विज़ुअल (आइकॉन)

SocialPostEntity में प्रोफ़ाइल, पोस्ट, और इंटरैक्शन से जुड़ा मेटाडेटा होता है.

  • प्रोफ़ाइल

    • अवतार, नाम या हैंडल, अतिरिक्त टेक्स्ट, अतिरिक्त इमेज
  • पोस्ट करें

    • टेक्स्ट और टाइमस्टैंप या
    • रिच मीडिया (इमेज या रिच यूआरएल) और टाइमस्टैंप या
    • टेक्स्ट और रिच मीडिया (इमेज या रिच यूआरएल) और टाइमस्टैंप या
    • वीडियो की झलक (थंबनेल और अवधि) और टाइमस्टैंप
  • इंटरैक्शन

    • सिर्फ़ गिनती और लेबल करें या
    • संख्या और विज़ुअल (आइकॉन)

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

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

खास जानकारी

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

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

क्लस्टर का टाइप क्लस्टर की सीमाएं क्लस्टर में इकाई की कम से कम सीमाएं किसी क्लस्टर में इकाइयों की ज़्यादा से ज़्यादा संख्या
सुझाव क्लस्टर ज़्यादा से ज़्यादा पांच कम से कम पांच (PortraitMediaEntity या SocialPostEntity) ज़्यादा से ज़्यादा 25 (PortraitMediaEntity या SocialPostEntity)

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

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

  1. PortraitMediaEntity
  2. SocialPostEntity

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

PortraitMediaEntity

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

सेवा देने वाली कंपनी के ऐप्लिकेशन में इकाई से डीप लिंक करें.

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

यूआरआई
पोस्ट से जुड़ा मेटाडेटा (ज़रूरी है)
इमेज ज़रूरी है

इमेज पोर्ट्रेट आसपेक्ट रेशियो में होनी चाहिए.

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

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

दिशा-निर्देश के लिए, इमेज की जानकारी देखें.
टेक्स्ट कॉन्टेंट वैकल्पिक किसी पोस्ट, अपडेट वगैरह का मुख्य टेक्स्ट. स्ट्रिंग (ज़्यादा से ज़्यादा 140 वर्ण इस्तेमाल करने का सुझाव दिया जाता है)
टाइमस्टैंप वैकल्पिक पोस्ट पब्लिश होने का समय. मिलीसेकंड में दिखाया गया, एपिक टाइमस्टैंप
क्या यह वीडियो कॉन्टेंट है वैकल्पिक क्या पोस्ट में वीडियो है? बूलियन
वीडियो का कुल समय वैकल्पिक वीडियो की अवधि मिलीसेकंड में. ज़्यादा समय के लिए
प्रोफ़ाइल से जुड़ा मेटाडेटा (ज़रूरी नहीं)
नाम ज़रूरी है प्रोफ़ाइल का नाम, आईडी या हैंडल, जैसे कि "जॉन डो", "@TeamPixel" स्ट्रिंग (ज़्यादा से ज़्यादा 25 वर्ण)
अवतार ज़रूरी है

उपयोगकर्ता की प्रोफ़ाइल फ़ोटो या अवतार इमेज.

स्क्वेयर 1:1 इमेज

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

प्रोफ़ाइल बैज. उदाहरण के लिए - पुष्टि वाला बैज

स्क्वेयर 1:1 इमेज

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

इंटरैक्शन की संख्या बताएं.उदाहरण के लिए, "3.7 मिलियन".

ध्यान दें: अगर गिनती और गिनती की वैल्यू, दोनों दी गई हैं, तो गिनती का इस्तेमाल किया जाएगा

स्ट्रिंग

टेक्स्ट का सुझाया गया साइज़: संख्या और लेबल के लिए ज़्यादा से ज़्यादा 20 वर्ण

वैल्यू की गिनती वैकल्पिक

वैल्यू के तौर पर इंटरैक्शन की संख्या.

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

ज़्यादा समय के लिए
लेबल वैकल्पिक बताएं कि इंटरैक्शन लेबल किस काम का है. उदाहरण के लिए - "पसंद".

स्ट्रिंग

सुझाया गया टेक्स्ट साइज़: गिनती और लेबल के लिए ज़्यादा से ज़्यादा 20 वर्ण

विज़ुअल वैकल्पिक

बताएं कि इंटरैक्शन किस लिए है. उदाहरण के लिए - ऐसी इमेज जिसमें पसंद करने के आइकॉन और इमोजी दिखाए गए हों.

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

ध्यान दें: यह स्क्वेयर 1:1 इमेज होनी चाहिए

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

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

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

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

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

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

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

SocialPostEntity

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

सेवा देने वाली कंपनी के ऐप्लिकेशन में इकाई से डीप लिंक करें.

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

यूआरआई

पोस्ट से जुड़ा मेटाडेटा (ज़रूरी है)

TextContent, Image या WebContent में से कम से कम एक का होना ज़रूरी है

इमेज वैकल्पिक

इमेज पोर्ट्रेट आसपेक्ट रेशियो में होनी चाहिए.

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

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

ज़्यादा जानकारी के लिए, इमेज की खास बातें देखें.
टेक्स्ट कॉन्टेंट वैकल्पिक किसी पोस्ट, अपडेट वगैरह का मुख्य टेक्स्ट. स्ट्रिंग (ज़्यादा से ज़्यादा 140 वर्ण इस्तेमाल करने का सुझाव दिया गया है)
वीडियो कॉन्टेंट (ज़रूरी नहीं)
कुल अवधि ज़रूरी है वीडियो की अवधि मिलीसेकंड में. ज़्यादा समय के लिए
इमेज ज़रूरी है वीडियो कॉन्टेंट की झलक वाली इमेज. दिशा-निर्देश के लिए, इमेज की जानकारी देखें.
लिंक की झलक (ज़रूरी नहीं)
लिंक की झलक - टाइटल ज़रूरी है वेब पेज के कॉन्टेंट का टाइटल बताने वाला टेक्स्ट स्ट्रिंग
लिंक की झलक - होस्टनेम ज़रूरी है वेब पेज के मालिक की जानकारी देने वाला टेक्स्ट, जैसे कि "INSIDER" स्ट्रिंग
लिंक की झलक - इमेज वैकल्पिक वेब कॉन्टेंट के लिए हीरो इमेज दिशा-निर्देश के लिए, इमेज की जानकारी देखें.
टाइमस्टैंप वैकल्पिक पोस्ट पब्लिश होने का समय. मिलीसेकंड में दिखाया गया, एपिक टाइमस्टैंप
प्रोफ़ाइल से जुड़ा मेटाडेटा (ज़रूरी नहीं है)
नाम ज़रूरी है प्रोफ़ाइल का नाम, आईडी या हैंडल, जैसे कि "जॉन डो", "@TeamPixel." स्ट्रिंग (ज़्यादा से ज़्यादा 25 वर्ण)
अतिरिक्त टेक्स्ट वैकल्पिक

इसका इस्तेमाल प्रोफ़ाइल आईडी, हैंडल या अतिरिक्त मेटाडेटा के तौर पर किया जा सकता है

उदाहरण के लिए, "@John-Doe", "50 लाख फ़ॉलोअर", "आपको पसंद आ सकती है", "ट्रेंडिंग", "पांच नई पोस्ट"

स्ट्रिंग(ज़्यादा से ज़्यादा 40 वर्ण)
अवतार ज़रूरी है

उपयोगकर्ता की प्रोफ़ाइल फ़ोटो या अवतार इमेज.

स्क्वेयर 1:1 इमेज

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

प्रोफ़ाइल बैज, जैसे कि - पुष्टि वाला बैज

स्क्वेयर 1:1 इमेज

ज़्यादा जानकारी के लिए, इमेज की खास बातें देखें.
इंटरैक्शन से जुड़ा मेटाडेटा (ज़रूरी नहीं)
संख्या ज़रूरी है इंटरैक्शन की संख्या बताएं. उदाहरण के लिए, "3.7 मिलियन". स्ट्रिंग (सुझाया गया है कि गिनती और लेबल के लिए ज़्यादा से ज़्यादा 20 वर्ण इस्तेमाल करें)
लेबल

वैकल्पिक

अगर यह नहीं दिया गया है, तो विज़ुअल दिया जाना चाहिए.

यह बताएं कि बातचीत किस मकसद से की गई है. उदाहरण के लिए - "पसंद". स्ट्रिंग (संख्या + लेबल के लिए ज़्यादा से ज़्यादा 20 वर्ण इस्तेमाल करने का सुझाव दिया जाता है)
विज़ुअल

वैकल्पिक

अगर यह नहीं दिया गया है, तो Label दिया जाना चाहिए.

बताएं कि इंटरैक्शन किस लिए है. उदाहरण के लिए - पसंद के आइकॉन और इमोजी दिखाने वाली इमेज.

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

स्क्वेयर 1:1 इमेज

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

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

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

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

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

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

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

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

इमेज को सार्वजनिक सीडीएन पर होस्ट करना ज़रूरी है, ताकि Google उन्हें ऐक्सेस कर सके.

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

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

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

5120 केबी

अन्य सुझाव

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

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

हमारा सुझाव है कि आप कॉन्टेंट पब्लिश करने के काम को बैकग्राउंड में लागू करें. उदाहरण के लिए, WorkManager का इस्तेमाल करके

सोशल क्लस्टर पब्लिश करने की ज़िम्मेदारी AppEngageSocialClient की है.

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

  • isServiceAvailable
  • publishRecommendationClusters
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • 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 ऑब्जेक्ट में ये एट्रिब्यूट हो सकते हैं:

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

सुझावों के क्लस्टर का टाइटल (उदाहरण के लिए, आपके दोस्तों से मिले सबसे नए सुझाव).

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

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

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

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

Kotlin

client.publishRecommendationClusters(
            PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Latest from your friends")
                        .build())
                .build())

Java

client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Latest from your friends")
                        .build())
                .build());

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

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

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

publishUserAccountManagementRequest

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

यहां दिया गया मेटाडेटा, साइन इन कार्ड का हिस्सा है -

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

कार्ड पर दिखाई गई इमेज

16x9 के आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) वाली इमेज, जिनका रिज़ॉल्यूशन 1264x712 है

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

Kotlin

var SIGN_IN_CARD_ENTITY =
      SignInCardEntity.Builder()
          .addPosterImage(
              Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build()

client.publishUserAccountManagementRequest(
            PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

Java

SignInCardEntity SIGN_IN_CARD_ENTITY =
      new SignInCardEntity.Builder()
          .addPosterImage(
              new Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build();

client.publishUserAccountManagementRequest(
            new PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

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

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

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

updatePublishStatus

अगर किसी अंदरूनी कारोबारी वजह से, कोई भी क्लस्टर पब्लिश नहीं किया गया है, तो हमारा सुझाव है कि आप updatepublishStatus एपीआई का इस्तेमाल करके, प्रकाशन की स्थिति अपडेट करें. ऐसा इसलिए ज़रूरी है, क्योंकि :

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

पब्लिश करने की स्थिति के कोड की सूची यहां दी गई है:

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

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

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

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

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

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

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

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

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

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

Kotlin

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

Java

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

deleteRecommendationClusters

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

Kotlin

client.deleteRecommendationClusters()

Java

client.deleteRecommendationClusters();

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

deleteUserManagementCluster

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

Kotlin

client.deleteUserManagementCluster()

Java

client.deleteUserManagementCluster();

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

deleteClusters

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

Kotlin

client.deleteClusters(
    DeleteClustersRequest.Builder()
      .addClusterType(ClusterType.TYPE_RECOMMENDATION)
      ...
      .build())

Java

client.deleteClusters(
            new DeleteClustersRequest.Builder()
                .addClusterType(ClusterType.TYPE_RECOMMENDATION)
                ...
                .build());

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

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

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

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

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

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

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

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

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

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

  • Context.registerReceiver() का इस्तेमाल करके, BroadcastReceiver क्लास का इंस्टेंस डाइनैमिक तौर पर रजिस्टर करें. इससे, उन ऐप्लिकेशन से कम्यूनिकेशन की सुविधा चालू हो जाती है जो अब भी मेमोरी में मौजूद हैं.
class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION 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));

}

  • अपनी AndroidManifest.xml फ़ाइल में, <receiver> टैग के साथ लागू करने का एलान करें. इससे ऐप्लिकेशन को ब्रॉडकास्ट के लिए भेजे गए इंटेंट तब भी मिल सकते हैं, जब वह ऐप्लिकेशन बंद हो. साथ ही, ऐप्लिकेशन को कॉन्टेंट पब्लिश करने की अनुमति भी मिलती है.
<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:exported="true"
      android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
      </intent-filter>
   </receiver>
</application>

सेवा से ये इंटेंट भेजे जाएंगे:

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION हमारा सुझाव है कि इस इंटेंट के बाद, publishRecommendationClusters कॉल करें.

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

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

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

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

संपर्क

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

अगले चरण

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

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