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

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

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

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

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

शब्दावली

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

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

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

हर सुझाव क्लस्टर में, नीचे दिए गए दो तरह के इकाइयां :

  • पोर्ट्रेट मीडिया एंटिटी
  • सोशलपोस्ट एंटिटी

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

  • पोस्ट करें

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

    • अवतार, नाम या हैंडल, अन्य इमेज
  • बातचीत

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

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

  • प्रोफ़ाइल

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

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

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

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

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

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

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

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

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

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

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

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

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

स्ट्रिंग

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

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

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

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

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

स्ट्रिंग

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

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

यह बताएं कि बातचीत किस मकसद से की गई है. उदाहरण के लिए - इमेज दिखाना 'पसंद है' आइकॉन और इमोजी.

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

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

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

Epoch टाइमस्टैंप, जिसके बाद कॉन्टेंट की जगह है.

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

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

उस समय का टाइमस्टैंप जिसके बाद कॉन्टेंट नहीं दिखेगा की सतह.

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

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

SocialPostEntity

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

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

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

यूआरआई

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

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

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

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

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

अगर पोस्ट कोई वीडियो है, तो प्रोवाइडर को को चुनना होगा.

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

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

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

स्ट्रिंग(ज़्यादा से ज़्यादा 40 वर्ण इस्तेमाल करने का सुझाव दिया जाता है)
अवतार ज़रूरी है

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

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

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

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

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

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

वैकल्पिक

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

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

वैकल्पिक

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

यह बताएं कि बातचीत किस मकसद से की गई है. उदाहरण के लिए - इमेज में 'पसंद है' आइकॉन और इमोजी दिखाया गया है.

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

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

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

Epoch टाइमस्टैंप, जिसके बाद कॉन्टेंट की जगह है.

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

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

उस समय का टाइमस्टैंप जिसके बाद कॉन्टेंट नहीं दिखेगा की सतह.

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

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

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

इमेज को सार्वजनिक सीडीएन पर होस्ट करना ज़रूरी है, ताकि 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 से कम वर्ण (ऐसा टेक्स्ट जो बहुत लंबे होने पर एलिप्सिस दिख सकते हैं)

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

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

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

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

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

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

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

कार्ड पर दिखाई गई चित्र

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

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

  • कॉन्टेंट पब्लिश होने के बाद भी, हर स्थिति में स्टेटस देना (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 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();

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

deleteUserManagementCluster

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

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

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

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

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

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 के तौर पर दिखाया जाता है. इसके लिए, वजह भी बताई जाती है गड़बड़ी कोड.

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

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

किसी जॉब के ज़रिए, Publishing Content API कॉल करने के अलावा, यह सेट अप करने के लिए ज़रूरी है पाने के लिए BroadcastReceiver कॉन्टेंट पब्लिश करने का अनुरोध सबमिट करें.

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

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

  • BroadcastReceiver क्लास के इंस्टेंस को डाइनैमिक तौर पर रजिस्टर करने के लिए, इनका इस्तेमाल करें Context.registerReceiver(). इसकी मदद से, ऐप्लिकेशन के ज़रिए बातचीत की जा सकती है जो अब भी मेमोरी में हैं.
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));

}

  • अपने<receiver> AndroidManifest.xml फ़ाइल. इससे ऐप्लिकेशन को ब्रॉडकास्ट मिलने लगता है इंटेंट, जब वह नहीं चल रहा होता है, और ऐप्लिकेशन को प्रकाशित करने की अनुमति भी देता है या वीडियो कॉन्टेंट.
<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 कॉल तब शुरू करें, जब इस इंटेंट को स्वीकार कर रहे हैं.

एकीकरण वर्कफ़्लो

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

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

इनके बारे में जानने के लिए, जुड़ाव वाले SDK टूल के बारे में अक्सर पूछे जाने वाले सवाल देखें अक्सर पूछे जाने वाले सवाल.

संपर्क

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

अगले चरण

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

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