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

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

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

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

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

शब्दावली

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

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

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

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

  • PortraitMediaEntity
  • 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'
}

खास जानकारी

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

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

क्लस्टर का टाइप क्लस्टर की सीमाएं किसी क्लस्टर में कम से कम इकाई सीमाएं किसी क्लस्टर में ज़्यादा से ज़्यादा कितनी इकाइयां हो सकती हैं
सुझाव वाले क्लस्टर ज़्यादा से ज़्यादा 7 कम से कम 1 (PortraitMediaEntity या SocialPostEntity) ज़्यादा से ज़्यादा 50 (PortraitMediaEntity या SocialPostEntity)

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

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

  1. PortraitMediaEntity
  2. SocialPostEntity

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

PortraitMediaEntity

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

स्ट्रिंग

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

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

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

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

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

स्ट्रिंग

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

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

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

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

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

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

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

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

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

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

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

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

SocialPostEntity

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

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

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

यूआरआई

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

वैकल्पिक

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

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

वैकल्पिक

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

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

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

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

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

पब्लिश करने की मंज़ूरी वाले स्टेटस कोड की सूची यहां दी गई है :

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

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

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

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

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

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

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

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

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

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

Kotlin

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

Java

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

deleteRecommendationClusters

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

Kotlin

client.deleteRecommendationClusters()

Java

client.deleteRecommendationClusters();

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

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 सेवा के लिए कॉल बहुत बार किया गया है.

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

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

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

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

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

Kotlin

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION
  // 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)
}

Java

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),
                         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>
   </receiver>
</application>

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

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION इस इंटेंट को पाने पर, publishRecommendationClusters कॉल शुरू करने का सुझाव दिया जाता है.

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

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

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

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

संपर्क

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

अगले चरण

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

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