Google, उपयोगकर्ता के डिवाइस पर एक ऐसा प्लैटफ़ॉर्म बना रहा है जो वर्टिकल के हिसाब से ऐप्लिकेशन साथ ही, उपयोगकर्ताओं को उनके हिसाब से कॉन्टेंट देखने का बेहतर अनुभव मिलता है. खोजने के लिए इस्तेमाल किया जा सकता है. फ़ुलस्क्रीन वाले इस अनुभव से डेवलपर पार्टनर को अपना सबसे अच्छा रिच कॉन्टेंट दिखाने का मौका उसके ऐप्लिकेशन के बारे में बात करते हैं.
इस गाइड में डेवलपर पार्टनर के लिए निर्देश दिए गए हैं, ताकि वे आसानी से पढ़ा जा सकने वाला कॉन्टेंट. साथ ही, इस नए सरफ़ेस एरिया को पॉप्युलेट करने के लिए, Engage SDK टूल का इस्तेमाल किया गया है और मौजूदा Google प्लैटफ़ॉर्म के लिए भी उपलब्ध हैं.
इंटिग्रेशन की जानकारी
शब्दावली
इस इंटिग्रेशन में ये तीन तरह के क्लस्टर शामिल होते हैं: सुझाव, जारी रखें और चुनिंदा.
सुझाव क्लस्टर में, कॉन्टेंट को पढ़ने के लिए आपके हिसाब से बनाए गए सुझाव दिखाए जाते हैं को भी ऐक्सेस किया जा सकता है.
आपके सुझावों के लिए यह तरीका अपनाया जाता है:
सुझाव क्लस्टर: ऐसा यूज़र इंटरफ़ेस (यूआई) व्यू जिसमें किसी एक डेवलपर पार्टनर से सुझाव पाएं.
इकाई: क्लस्टर में किसी एक आइटम को दिखाने वाला ऑब्जेक्ट. कोई इकाई इनमें ई-बुक, ऑडियो बुक, किसी बुक सीरीज़ वगैरह शामिल हो सकती हैं. दिए गए निर्देश देखें उपलब्ध कराने के लिए इस्तेमाल की जा सकने वाली इकाई की सूची के लिए, इकाई का डेटा सेक्शन प्रकार.
कंटिन्युएशन क्लस्टर में, एक से ज़्यादा डेवलपर की अधूरी किताबें दिखती हैं एक यूज़र इंटरफ़ेस (यूआई) ग्रुपिंग में पार्टनर. हर डेवलपर पार्टनर को ये काम करने की अनुमति दी जाएगी कंटिन्यूएशन क्लस्टर में ज़्यादा से ज़्यादा 10 इकाइयों को ब्रॉडकास्ट करता है.
चुनिंदा क्लस्टर में एक से ज़्यादा आइटम में से चुनिंदा आइटम दिखाए जाते हैं एक यूज़र इंटरफ़ेस (यूआई) ग्रुपिंग में डेवलपर पार्टनर. इवेंट में एक चुनिंदा फ़ीचर शामिल होगा क्लस्टर का इस्तेमाल करें. यह यूज़र इंटरफ़ेस (यूआई) के सबसे ऊपरी हिस्से में, प्राथमिकता वाले प्लेसमेंट के साथ दिखता है क्लिक करें. हर डेवलपर पार्टनर को ये काम करने की अनुमति दी जाएगी चुनिंदा क्लस्टर में 10 इकाइयों तक की ब्रॉडकास्टिंग.
सेशन की तैयारी
कम से कम एपीआई लेवल: 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'
}
खास जानकारी
यह डिज़ाइन, लागू करने पर आधारित है और सेवा.
क्लाइंट के पब्लिश किए जा सकने वाले डेटा पर, नीचे दी गई सीमाएं लागू होती हैं. ये सीमाएं, क्लस्टर के टाइप:
क्लस्टर का टाइप | क्लस्टर की सीमाएं | क्लस्टर में इकाई की तय सीमाएं |
---|---|---|
सुझाव क्लस्टर | ज़्यादा से ज़्यादा पांच | ज़्यादा से ज़्यादा 50 |
कंटिन्यूएशन क्लस्टर | ज़्यादा से ज़्यादा एक | ज़्यादा से ज़्यादा 10 |
चुनिंदा क्लस्टर | ज़्यादा से ज़्यादा एक | ज़्यादा से ज़्यादा 10 |
पहला चरण: इकाई का डेटा देना
SDK टूल ने हर तरह के आइटम को दिखाने के लिए अलग-अलग इकाइयां तय की हैं. हम सहायता करते हैं पढ़ें कैटगरी के लिए ये इकाइयां:
EbookEntity
AudiobookEntity
BookSeriesEntity
नीचे दिए गए चार्ट में हर तरह के एट्रिब्यूट और उनकी ज़रूरी शर्तों के बारे में बताया गया है.
EbookEntity
EbookEntity
ऑब्जेक्ट किसी ई-बुक को दिखाता है. उदाहरण के लिए,
मिशेल ओबामा का बनना).
एट्रिब्यूट | ज़रूरी शर्त | नोट |
---|---|---|
नाम | ज़रूरी है | |
पोस्टर की इमेज | ज़रूरी है | कम से कम एक इमेज दी जानी चाहिए. इमेज देखें खास जानकारी देखें. |
लेखक | ज़रूरी है | कम से कम एक लेखक का नाम देना ज़रूरी है. |
कार्रवाई लिंक uri | ज़रूरी है |
ई-बुक की सेवा देने वाले ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले यह सवाल देखें |
पब्लिश होने की तारीख | वैकल्पिक | अगर दिया गया हो, तो epoch मिलीसेकंड में. |
ब्यौरा | वैकल्पिक | अगर दिया गया हो, तो यह 200 वर्णों से ज़्यादा नहीं होना चाहिए. |
कीमत | वैकल्पिक | फ़्री टेक्स्ट |
पेज संख्या | वैकल्पिक | अगर दिया गया हो, तो एक धनात्मक पूर्णांक होना चाहिए. |
शैली | वैकल्पिक | किताब से जुड़ी शैलियों की सूची. |
सीरीज़ का नाम | वैकल्पिक | उस सीरीज़ का नाम जिससे ई-बुक जुड़ी है (उदाहरण के लिए, हैरी पॉटर). |
सीरीज़ यूनिट इंडेक्स | वैकल्पिक | सीरीज़ में ई-बुक का इंडेक्स, जहां 1 पहली ई-बुक है सीरीज़ शामिल है. उदाहरण के लिए, अगर हैरी पॉटर और इसका बंदी अज़्काबान इस सीरीज़ की तीसरी किताब है. इसे तीन पर सेट किया जाना चाहिए. |
किताब का टाइप जारी रखें | वैकल्पिक |
TYPE_जारी रखें - अधूरी किताब पर फिर से शुरू करें. TYPE_Next - किसी नई सीरीज़ पर जारी रखें. TYPE_NEW - नया रिलीज़ किया गया. |
दर्शकों के जुड़ाव का आखिरी समय | शर्तों के हिसाब से ज़रूरी है |
यह वैल्यू तब सबमिट की जानी चाहिए, जब आइटम कंटिन्यूएशन क्लस्टर में हो. *नई* ई-बुक, 'पढ़ने जारी रखें' क्लस्टर का हिस्सा हो सकती हैं. Epoch मिलीसेकंड में. |
प्रोग्रेस का प्रतिशत पूरा हुआ | शर्तों के हिसाब से ज़रूरी है |
यह वैल्यू तब सबमिट की जानी चाहिए, जब आइटम कंटिन्यूएशन क्लस्टर में हो. इसकी वैल्यू 0 और 100 से कम होनी चाहिए. |
DisplayTimeWindow - किसी कॉन्टेंट के लिए टाइम विंडो सेट करें प्लैटफ़ॉर्म पर लोगों को दिखाने के लिए | ||
शुरू होने का टाइमस्टैंप | वैकल्पिक |
Epoch टाइमस्टैंप, जिसके बाद कॉन्टेंट की जगह है. अगर यह नीति सेट नहीं है, तो कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है. Epoch मिलीसेकंड में. |
खत्म होने का टाइमस्टैंप | वैकल्पिक |
उस समय का टाइमस्टैंप जिसके बाद कॉन्टेंट नहीं दिखेगा की सतह. अगर यह नीति सेट नहीं है, तो कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है. Epoch मिलीसेकंड में. |
AudiobookEntity
AudiobookEntity
ऑब्जेक्ट, किसी ऑडियो बुक को दिखाता है. उदाहरण के लिए, ऑडियो बुक
मिशैल ओबामा के Becoming में से एक लेख.
एट्रिब्यूट | ज़रूरी शर्त | नोट |
---|---|---|
नाम | ज़रूरी है | |
पोस्टर की इमेज | ज़रूरी है | कम से कम एक इमेज दी जानी चाहिए. इमेज देखें खास जानकारी देखें. |
लेखक | ज़रूरी है | कम से कम एक लेखक का नाम देना ज़रूरी है. |
Narrator | ज़रूरी है | कम से कम एक नैरेटर का नाम देना ज़रूरी है. |
कार्रवाई लिंक uri | ज़रूरी है |
ऑडियो बुक को उपलब्ध कराने वाले ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले यह सवाल देखें |
पब्लिश होने की तारीख | वैकल्पिक | अगर दिया गया हो, तो epoch मिलीसेकंड में. |
ब्यौरा | वैकल्पिक | अगर दिया गया हो, तो यह 200 वर्णों से ज़्यादा नहीं होना चाहिए. |
कीमत | वैकल्पिक | फ़्री टेक्स्ट |
कुल अवधि | वैकल्पिक | अगर डाला गया मान पॉज़िटिव होना चाहिए, तो इसे पॉज़िटिव होना चाहिए. |
शैली | वैकल्पिक | किताब से जुड़ी शैलियों की सूची. |
सीरीज़ का नाम | वैकल्पिक | उस सीरीज़ का नाम जिससे ऑडियो बुक जुड़ी है (उदाहरण के लिए, हैरी पॉटर. |
सीरीज़ यूनिट इंडेक्स | वैकल्पिक | सीरीज़ में शामिल ऑडियो बुक का इंडेक्स. यहां पहली ऑडियो बुक 1 है सीरीज़ में देखें. उदाहरण के लिए, अगर हैरी पॉटर और इसका बंदी अज़्काबान इस सीरीज़ की तीसरी किताब है. इसे तीन पर सेट किया जाना चाहिए. |
किताब का टाइप जारी रखें | वैकल्पिक |
TYPE_जारी रखें - अधूरी किताब पर फिर से शुरू करें. TYPE_Next - किसी नई सीरीज़ पर जारी रखें. TYPE_NEW - नया रिलीज़ किया गया. |
दर्शकों के जुड़ाव का आखिरी समय | शर्तों के हिसाब से ज़रूरी है | यह वैल्यू तब सबमिट की जानी चाहिए, जब आइटम कंटिन्यूएशन क्लस्टर में हो. Epoch मिलीसेकंड में. |
प्रोग्रेस का प्रतिशत पूरा हुआ | शर्तों के हिसाब से ज़रूरी है |
यह वैल्यू तब सबमिट की जानी चाहिए, जब आइटम कंटिन्यूएशन क्लस्टर में हो. *नई* ऑडियो बुक भी, 'पढ़ने के लिए जारी रखें' सेक्शन का हिस्सा हो सकती हैं क्लस्टर. इसकी वैल्यू 0 और 100 से कम होनी चाहिए. |
DisplayTimeWindow - किसी कॉन्टेंट के लिए टाइम विंडो सेट करें प्लैटफ़ॉर्म पर लोगों को दिखाने के लिए | ||
शुरू होने का टाइमस्टैंप | वैकल्पिक |
Epoch टाइमस्टैंप, जिसके बाद कॉन्टेंट की जगह है. अगर यह नीति सेट नहीं है, तो कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है. Epoch मिलीसेकंड में. |
खत्म होने का टाइमस्टैंप | वैकल्पिक |
उस समय का टाइमस्टैंप जिसके बाद कॉन्टेंट नहीं दिखेगा की सतह. अगर यह नीति सेट नहीं है, तो कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है. Epoch मिलीसेकंड में. |
BookSeriesEntity
BookSeriesEntity
ऑब्जेक्ट, किसी किताब की सीरीज़ दिखाता है (उदाहरण के लिए, हैरी
पॉटर किताबों की सीरीज़, जिसमें सात किताबें हैं).
एट्रिब्यूट | ज़रूरी शर्त | नोट |
---|---|---|
नाम | ज़रूरी है | |
पोस्टर की इमेज | ज़रूरी है | कम से कम एक इमेज दी जानी चाहिए. इमेज देखें खास जानकारी देखें. |
लेखक | ज़रूरी है | कम से कम एक लेखक का नाम होना चाहिए. |
कार्रवाई लिंक uri | ज़रूरी है |
ऑडियो बुक या ई-बुक को उपलब्ध कराने वाले ऐप्लिकेशन का डीप लिंक. ध्यान दें: एट्रिब्यूशन के लिए डीप लिंक का इस्तेमाल किया जा सकता है. अक्सर पूछे जाने वाले यह सवाल देखें |
किताबों की संख्या | ज़रूरी है | सीरीज़ में शामिल किताबों की संख्या. |
ब्यौरा | वैकल्पिक | अगर दिया गया हो, तो यह 200 वर्णों से ज़्यादा नहीं होना चाहिए. |
शैली | वैकल्पिक | किताब से जुड़ी शैलियों की सूची. |
किताब का टाइप जारी रखें | वैकल्पिक |
TYPE_जारी रखें - अधूरी किताब पर फिर से शुरू करें. TYPE_Next - किसी नई सीरीज़ पर जारी रखें. TYPE_NEW - नया रिलीज़ किया गया. |
दर्शकों के जुड़ाव का आखिरी समय | शर्तों के हिसाब से ज़रूरी है | यह वैल्यू तब सबमिट की जानी चाहिए, जब आइटम कंटिन्यूएशन क्लस्टर में हो. Epoch मिलीसेकंड में. |
प्रोग्रेस का प्रतिशत पूरा हुआ | शर्तों के हिसाब से ज़रूरी है | यह वैल्यू तब सबमिट की जानी चाहिए, जब आइटम कंटिन्यूएशन क्लस्टर में हो. *नई* किताब की सीरीज़, लगातार पढ़ी जा सकने वाली किताबों का हिस्सा हो सकती है क्लस्टर. इसकी वैल्यू 0 और 100 से कम होनी चाहिए. |
DisplayTimeWindow - किसी कॉन्टेंट के लिए टाइम विंडो सेट करें प्लैटफ़ॉर्म पर लोगों को दिखाने के लिए | ||
शुरू होने का टाइमस्टैंप | वैकल्पिक |
Epoch टाइमस्टैंप, जिसके बाद कॉन्टेंट की जगह है. अगर यह नीति सेट नहीं है, तो कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है. Epoch मिलीसेकंड में. |
खत्म होने का टाइमस्टैंप | वैकल्पिक |
उस समय का टाइमस्टैंप जिसके बाद कॉन्टेंट नहीं दिखेगा की सतह. अगर यह नीति सेट नहीं है, तो कॉन्टेंट को प्लैटफ़ॉर्म पर दिखाया जा सकता है. Epoch मिलीसेकंड में. |
इमेज की जानकारी
इमेज एसेट के लिए ज़रूरी जानकारी नीचे दी गई है:
आसपेक्ट रेशियो | ज़रूरी शर्त | कम से कम पिक्सल | सुझाए गए पिक्सल |
---|---|---|---|
स्क्वेयर (1x1) | ज़रूरी है | 300x300 | 1200x1200 |
लैंडस्केप (1.91x1) | वैकल्पिक | 600x314 | 1200x628 |
पोर्ट्रेट (4x5) | वैकल्पिक | 480x600 | 960x1200 |
फ़ाइल फ़ॉर्मैट
PNG, JPG, स्टैटिक GIF, WebP
फ़ाइल का ज़्यादा से ज़्यादा साइज़
5120 केबी
अन्य सुझाव
- इमेज के लिए सुरक्षित जगह: अपने मुख्य कॉन्टेंट को इमेज के बीच वाले 80% हिस्से में रखें इमेज.
उदाहरण
AudiobookEntity audiobookEntity =
new AudiobookEntity.Builder()
.setName("Becoming")
.addPosterImage(
new Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(960)
.setImageWidthInPixel(408)
.build())
.addAuthor("Michelle Obama")
.addNarrator("Michelle Obama")
.setActionLinkUri(Uri.parse("https://play.google/audiobooks/1"))
.setDurationMillis(16335L)
.setPublishDateEpochMillis(1633032895L)
.setDescription("An intimate, powerful, and inspiring memoir")
.setPrice("$16.95")
.addGenre("biography")
.build();
दूसरा चरण: क्लस्टर डेटा उपलब्ध कराना
हमारा सुझाव है कि बैकग्राउंड में कॉन्टेंट पब्लिश करने का काम लागू करें उदाहरण के लिए, WorkManager का इस्तेमाल करके और नियमित आधार पर या किसी इवेंट के आधार पर शेड्यूल किया गया हो. उदाहरण के लिए, हर बार उपयोगकर्ता ऐप्लिकेशन खोलता है या जब उपयोगकर्ता ने अपने कार्ट में कुछ जोड़ा होता है).
क्लस्टर पब्लिश करने की ज़िम्मेदारी AppEngagePublishClient
की है. फ़ॉलो कर रहे हैं
क्लाइंट में एपीआई उपलब्ध हैं:
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishContinuationCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteContinuationCluster
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
ऑब्जेक्ट की सूची को पब्लिश करने के लिए किया जाता है.
Kotlin
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Reconnect with yourself") .build()) .build())
Java
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( new RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Reconnect with yourself") .build()) .build());
जब सेवा को अनुरोध मिलता है, तो नीचे दी गई कार्रवाइयां होती हैं एक लेन-देन:
- डेवलपर पार्टनर से मिला,
RecommendationCluster
का मौजूदा डेटा हटा दिया जाता है. - अनुरोध के डेटा को पार्स किया जाता है और अपडेट किए गए सुझाव में सेव किया जाता है क्लस्टर.
कोई गड़बड़ी होने पर, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति रखरखाव किया जा रहा है.
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
का मौजूदा डेटा हटा दिया जाता है. - अनुरोध के डेटा को पार्स किया जाता है और अपडेट किए गए चुनिंदा क्लस्टर में स्टोर किया जाता है.
कोई गड़बड़ी होने पर, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति रखरखाव किया जा रहा है.
publishContinuationCluster
इस एपीआई का इस्तेमाल, ContinuationCluster
ऑब्जेक्ट को पब्लिश करने के लिए किया जाता है.
Kotlin
client.publishContinuationCluster( PublishContinuationClusterRequest.Builder() .setContinuationCluster( ContinuationCluster.Builder() .addEntity(book_entity1) .addEntity(book_entity2) .build()) .build())
Java
client.publishContinuationCluster( PublishContinuationClusterRequest.Builder() .setContinuationCluster( ContinuationCluster.Builder() .addEntity(book_entity1) .addEntity(book_entity2) .build()) .build())
जब सेवा को अनुरोध मिलता है, तो नीचे दी गई कार्रवाइयां होती हैं एक लेन-देन:
- डेवलपर पार्टनर से मिला,
ContinuationCluster
का मौजूदा डेटा हटा दिया जाता है. - अनुरोध के डेटा को पार्स किया जाता है और अपडेट किए गए कंटिन्युएशन में स्टोर किया जाता है क्लस्टर.
कोई गड़बड़ी होने पर, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति रखरखाव किया जा रहा है.
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, साइन इन कार्ड को पब्लिश करने का सुझाव देगा. अगर किसी वजह से सेवा देने वाली कंपनियां, साइन इन कार्ड पब्लिश नहीं कर पा रही हैं इसके बाद, हमारा सुझाव है कि updatePublicStatus एपीआई पर कॉल किया जाए स्थिति कोड NOT_PUBLISHED_REQUIRES_SIGN_IN के साथ
Kotlin
client.updatePublishStatus( PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build())
Java
client.updatePublishStatus( new PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build());
deleteRecommendationClusters
इस एपीआई का इस्तेमाल, सुझाव क्लस्टर का कॉन्टेंट मिटाने के लिए किया जाता है.
Kotlin
client.deleteRecommendationClusters()
Java
client.deleteRecommendationClusters();
जब सेवा को अनुरोध मिलता है, तो वह सुझाव क्लस्टर. कोई गड़बड़ी होने पर, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहेगी.
deleteFeaturedCluster
इस एपीआई का इस्तेमाल, चुनिंदा क्लस्टर का कॉन्टेंट मिटाने के लिए किया जाता है.
Kotlin
client.deleteFeaturedCluster()
Java
client.deleteFeaturedCluster();
जब सेवा को अनुरोध मिलता है, तो वह चुनिंदा क्लस्टर. कोई गड़बड़ी होने पर, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहेगी.
deleteContinuationCluster
इस एपीआई का इस्तेमाल, कंटिन्यूएशन क्लस्टर का कॉन्टेंट मिटाने के लिए किया जाता है.
Kotlin
client.deleteContinuationCluster()
Java
client.deleteContinuationCluster();
जब सेवा को अनुरोध मिलता है, तो वह कंटिन्यूएशन क्लस्टर. कोई गड़बड़ी होने पर, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति बनी रहेगी.
deleteUserManagementCluster
इस एपीआई का इस्तेमाल UserAccountManagement Cluster का कॉन्टेंट मिटाने के लिए किया जाता है.
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());
जब सेवा को अनुरोध मिलता है, तो वह सभी सेवाओं से मौजूदा डेटा हटा देती है किसी खास तरह के क्लस्टर से मिलते-जुलते क्लस्टर. क्लाइंट इनमें से किसी एक तरीके को कई तरह के क्लस्टर हैं. कोई गड़बड़ी होने पर, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति को बनाए रखा जाता है.
गड़बड़ी ठीक करना
हमारा सुझाव है कि आप 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
// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
// Trigger continuation cluster publish when PUBLISH_CONTINUATION 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));
// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED));
// Register Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION));
}
- अपने
<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>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
</intent-filter>
</receiver>
</application>
ये इंटेंट सेवा:
com.google.android.engage.action.PUBLISH_RECOMMENDATION
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है हमारा सुझाव है कि आपpublishRecommendationClusters
कॉल तब शुरू करें, जब इस इंटेंट को स्वीकार कर रहे हैं.com.google.android.engage.action.PUBLISH_FEATURED
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है हमारा सुझाव है कि इस कॉल को पाने के लिए,publishFeaturedCluster
कॉल करें इंटेंट.- जवाब पाने के दौरान, com.google.android.engagement.action.PUBLISH_CONTINUATION
It is recommended to start a
publishContinuationCluster` कॉल इस इंटेंट के आधार पर.
एकीकरण वर्कफ़्लो
इंटिग्रेशन पूरा हो जाने के बाद, उसकी पुष्टि करने से जुड़े सिलसिलेवार निर्देश के लिए, देखें डेवलपर इंटिग्रेशन वर्कफ़्लो का इस्तेमाल करना.
अक्सर पूछे जाने वाले सवाल
इनके बारे में जानने के लिए, जुड़ाव वाले SDK टूल के बारे में अक्सर पूछे जाने वाले सवाल देखें अक्सर पूछे जाने वाले सवाल.
संपर्क
संपर्क जानकारी [email protected] पर, अगर वहां इंटिग्रेशन के दौरान पूछे गए किसी भी सवाल का जवाब दिया जा सकता है. हमारी टीम जल्द से जल्द जवाब देगी किया जा सकता है.
अगले चरण
इस इंटिग्रेशन को पूरा करने के बाद, आपको ये काम करने होंगे:
- इन्हें ईमेल भेजें [email protected] और अटैच करें आपका इंटिग्रेट किया गया APK, जिसे Google टेस्ट करने के लिए तैयार है.
- Google यह पक्का करने के लिए संगठन में काम करने वाले लोगों के लिए, कारोबार की पुष्टि और समीक्षा करेगा इंटिग्रेशन उम्मीद के मुताबिक काम करता है. ज़रूरत पड़ने पर, Google आपसे संपर्क करेगा पर ईमेल करें.
- जांच पूरी हो जाने और किसी बदलाव की ज़रूरत न होने पर, Google आपसे संपर्क करेगा आपको सूचित करेगा कि आप अपडेट किए गए और एकीकृत APK प्रकाशित करना शुरू कर सकते हैं Play Store पर टैप करें.
- जब Google पुष्टि कर देगा कि आपका अपडेट किया गया APK Play Store, आपका सुझाव, चुनिंदा, और जारी रखना क्लस्टर पब्लिश कर दिए जाएंगे और उपयोगकर्ताओं को दिखेंगे.